小学数学第九册第三单元试卷(一)(A)2
(五年级第十一册 人教版)
地址 下载
如果您在点击时出现“找不到网页”或“无法连接服务器”的错误提示,则表明你的IE需要设置,方法如下:
打开IE浏览器,点顶上菜单栏中的“工具——Internet选项——高级”,找到“用UTF-8发送URL”这一选项,把前面的勾去掉。
这个勾必须要去掉,否则很可能导致您无法正常下载!!
试题预览
一、 判断题(每道小题 2分 共 10分 )
1. 含有字母的式子叫方程. ( ) 2. 一支铅笔x元, 小明买了5支, 付给售货员y元, 应找回(y-5x)元. ( ) 3. 每个练习本1.5元, 用x元可买(x÷1.5)本. ( ) 4. 12-3x=0不是方程. ( ) 5. 当x=1.125时, x×9=x+9 ( ) 二、 单选题(每道小题 4分 共 8分 )
1. x×7=14是方程解的是. [ ] A.x=98 B.x=2
2. 3(x-2)=15指出括号中哪个值是方程的解. [ ] A.x=5 B.x=7 三、 填空题(1-3每题 1分, 4-5每题 2分, 6-8每题 3分, 第9小题 4分, 共 20分)
1. 求( )的过程, 叫做解方程. 2. 李华买铅笔用去a元, 买练习本用去b元, 他一共用去( )元. 3. 李华买铅笔用去0.7元, 买练习本用去1.2元, 他一共用去( )元. 4. 使方程左右两边( )的( )的值, 叫做方程的解.
5. 含有( )的( )式, 叫做方程. 6. 用含有字母的式子表示下面的数量关系. 从a的5.2倍中减去18.4( ) 7. 用含有字母的式子表示数量关系. x个3.5相加的和是y的几倍?( ) 8. 用含有字母的式子表示数量关系. a与b和的一半( ) 9. 五(1)班有女生a人, 女生比男生少3人, (1)男生有( )人. (2)男生是女生的( )倍. (3)全班共有( )人. (4)全班人数是女生的( )倍.
四、 计算题(每道小题 3分 共 12分 )
1. 4.8÷1.2+0.5x=8.5
2. 2.5x-0.6×1.5=6.6
3. 25×8-4x=0.6
4. 12.5x-0.9x=52.2
五、 文字叙述题(每道小题 6分 共 18分 )
1. 152.3与71.8的差除以一个数的商是2.3与2的积, 这个数是多少?(用方程解) 2. 比一个数的2.8倍多4.2的数是8.4, 这个数是多少?(用方程解) 3. 某数的2.4倍比48的一半多3.6, 某数是多少?(用方程解) 六、 应用题(每道小题 6分 共 24分 )
1. 王师傅二月份共生产840个零件, 比一月份的1.5倍少生产120个, 一月份生产零件多少个?(用方程解) 2. 一块梯形菜地面积是122.55平方米, 上底长18.6米, 下底长7.2米, 高是多少米?(用方程解) 3. 甲乙二人同时从相距360千米的甲乙两地相向而行, 7.2小时后相遇.甲的速度是乙的3倍, 乙每小时行多少千米?(用方程解) 4. 妈妈买了6千克苹果, 每千克3.2元, 付给售货员20元, 应找回多少元?(用方程解) 七、 其它题(每道小题 4分 共 8分 )
1. 下面的解法对吗?不对的请改正. 24-x=7 解: x=24-7=17 2. 下面的解法对吗?不对的请改正. 2.5(2+x)=10 解:2.5×2+x=10 5+x=10 x=10-5 x=5 上一个『
』 下一个『
浏览更多试题,请访问小学生学习数学的方法及培养途径
王秀容(206779) 发表于 2007-05-29 14:31:55
与大家共享: 小学生学习数学的方法及培养途径 为了适应学生的学习心理,发掘其潜能,义务教育教材已适当地降低了对数学知识体系严密性的要求,拉开了知识结构之间的“距离”,并以“结构化”与“问题化”互补的教材体系呈现出来。因而,学生必须掌握、并且具有一定的学习数学的方法,提高和发展学习能力,这也是上海“数学教育行动纲领”所提出的“基础能力”的要求。
为此,我们对小学生应具有的主要的学习数学的方法及其相应的培养途径进行了实践,以发展学生学习数学的能力。
.良好的学习习惯。叶圣陶先生说过:凡是好的态度和好的方法,都要使它化成习惯。只有熟练成了习惯,好的态度和方法才能随时随地表现……一辈子受用不尽。叶老的话阐明了良好的学习习惯和学习方法的关系:良好的学习习惯既是学生形成学习方法的基础,又是他们具有了一定的学习方法的集中体现。因此,培养学生从小养成良好的学习习惯具有十分重要的意义。主要的培养途径有:
)课前预习。预习的方法:明天要学习什么内容,是否能用今天学习的知识去解决它;在不懂的地方画上记号;尝试地做一二道题,看哪里有困难……上课伊始,教师先检查学生预习情况,并把上面的预习方法经常交代给学生。学生预习后就可带着问题投入新课的学习,上课时就更有目的性和针对性。这样做对于提高课堂学习的效果,养成学生的自学习惯,提高自学能力都有积极作用。
预习数学内容会显得较枯燥,所以,教师要经常表扬自觉预习的学生,以激励全体学生预习的积极性。
)课后整理。要养成先复习当天学习的知识,再做作业,最后,把学习内容加以整理的习惯。例如,能被
整除的数的特征,一位同学整理如下:
个位是
的数同时能被
这样,容易使学生学到的知识系统化,从而内化为他们的认知结构。
)在课内,要求学生:一要仔细看教师的操作演示、表情、手势;二要全神贯注地听老师的提问、点拨、归纳以及同学的发言;三要积极思考、联想;四要踊跃发表自己的想法,有困惑应发问,敢于质疑。
)要养成检查验算的习惯。检查验算的过程既是一种培养学生负责态度的途径,又是学生对自己思维活动的再认识过程。如有题:一个水池能盛水
吨,甲、乙两个水管同时向池内放水,
小时放满。
已知甲管每小时放水
吨,乙管每小时放水多少吨?学生设乙管每小时放水
吨,且列方程:
3+3x=54
54-3x=5
……最后解得
。学生一方面要检验
是否是方程的解;另一方面要检查列方程的依据是什么,解答过程是否简练。如果发现错了,那么失败就成了成功之母。这种“认知元”的发展是学生养成良好的学习习惯的重要标志。
.尝试活动。学生原有的认知结构具有同化作用,这是学生能进行尝试活动的心理支撑点。因此,学生具有了某一认知结构后,接着学习相应的后面知识时,教师可让学生去尝试学习。例如,学生掌握了整数四则混合运算顺序之后,可请他们去尝试学习“小数四则混合运算”,然后,教师稍作点拨:整数四则混合运算顺序同样适用于“小数四则混合运算”。学生就可同化新知识,从而构建新的认知结构:整小数四则混合运算的顺序都是:先乘除,后加减,有括号的要先算括号里的。
当学生掌握了“分数乘法应用题”,又理解了比与分数之间的关系以后,教师可让学生去尝试学习“按比例分配”的应用题。
.操作活动。当学生原有的认知结构似乎能同化又同化不了新知识时,他们的学习心理就有求助于外围行为的倾向。这时,教师就请学生去进行动手操作活动,进而刺激其心理,促进他们实现学习心理的相互作用、互为转化??学到新知识。
例如,教学“圆的周长”,学生引起心理反映:只能测量、计算直线图形的周长,用什么方法来得到曲线图形的周长呢?这时,教师就可要求学生分组进行操作活动,以满足他们的心理对行为的要求:
元硬币、瓶盖、飞碟等的直径与相应的圆周长分别是多少?并把得到的结果记入下表:
测量曲线图形的周长,学生还是第一次,可是当学生看到事先准备好的线、绳和直尺,他们借助对图形周长概念的理解,首先还是想出了用测量的办法求圆的周长:有些学生用线绕测量物一周,再拉直放在直尺上量得其周长;有些学生将测量物在直尺上滚一圈测得其周长。学生的测量活动(行为)反过来又必将引起其心理活动,所以,教师这时可要求学生对测量的结果进行思维活动:从所填的表格中你们能发现什么规律?
当学生无知识基础可作学习新知识的支撑点时,教师可直接请学生进行多次的操作活动,以不断刺激其心理,引起思维活动,从而达到理解新知的目的。例如,正、负数的加法:
=+1+2-2=+1
.观察活动。所谓观察是指学生对客观事物或某种现象的仔细察看,因而是一种有意注意。培养的途径是:教师提供的“客观事物或某种现象”特征有序、背景鲜明,而且要给出一些观察的思考题。这样有助于学生明确观察目标,进而使他们边观察,边思考,边议论,边作观察记录,以发现数学规律、本质。
“乘法分配律”的教学,根据例证得到三个等式:
教师要求学生结合下面的两个思考题观察上面的三个等式都具有什么相同点(即规律)。①竖里观察,等式的左边都有什么特点?等式右边又有什么特征?②横里观察,等式的左边与右边有怎样的关系?
教师再要求学生把记录的文字:两个加数的和与一个数相乘,两个积的和,两个加数分别与一个数相乘……整理一下就得到了“乘法分配律”。
低年级学生观察时更需要意志力参与。教学“几个和第几个”时,教师请小朋友仔细看主题图:有几个人排队上公共汽车?小明排在第几个?教师在示范时又提醒学生:看谁看得认真,第一行从左边起老师涂色了几只?第二行从左边起第几只涂了色?然后,教师写上“
只”、“第
教师运用语言的调节功能,激励低年级学生有意识地进行观察,这样能有效地促进学生心理转化,学到新知识。
.思考活动。所谓思考是指学习者对学习对象进行比较深刻的、周到的、复杂的思维活动过程。
比较有什么特点?学生经过思考、议论、相互启发和补充,逐步归纳出其特点:分子或分母中又含有分数。较好地理解了繁分数的意义。
学生有了思考方向,并进行广泛的联系和想像,他们才有可能捕捉到丰富的材料,进而去粗取精、去伪存真,找到解决问题的方法。如此长期培养学生,有利于他们形成思考的方法,提高思维的质量。
学生进行独立的思考活动的基本途径有:
)对思考对象进行分析、概括或抽象。例如,小军买
支圆珠笔,每支
元,共应付多少元?学生通过对题目分析,概括抽象出是求
是多少(或是求
倍是多少),所以可根据乘法的意义列式解答:
(元)。
)对思考对象进行分析,弄清题意;接着对条件和问题展开联想;然后,借助已掌握的概念进行思维活动(如判断、推理、变通等),把条件与问题“接通”??建立模型。如:
一个正方形花坛四周铺有一条宽
的水泥路,已知路面面积
(如下图),求正方形花坛的周长。
弄清题意:条件是有空白部分面积
,正方形的四条边长相等。问题是求正方形花坛的周长。
对条件与问题展开联想:正方形花坛边长知道了,其周长也就可求出来了。花坛边长与外正方形边长有联系:如将空白部分面积分成
个相等的梯形,则花坛边长与梯形的上底有联系(下左图);如将空白部分面积平均分成
个长方形,则花坛边长与长方形的长有联系(下图)……
建立数学模型:如根据每个梯形的面积与空白部分总面积
的联系建立模型,则:
一个梯形面积
进而,建立方程(设花坛的边长为
所以,正方形花坛的周长是
同样可根据每个小长方形的面积是(
,求得花坛的边长为
.自学活动。中高年级学生随着识字量增多,数学知识的长进,他们已具备了一定的自学基础,这里主要是指学生课内的独立性自学活动。
)学生要掌握认真阅读课本的方法。对于课本中的例题及其他文字,要逐字逐词逐句逐段地阅读,反复地阅读,直至读懂、读明白意思为止;要把文字与插图结合起来看,这样有助于理解图意、弄清文字
意思;要有重点地阅读某些教学内容,如重点阅读“想”的过程,方框内的结论,把重点的词、勾画出来,这样有助于学生理解阅读教材的关键、本质。
)学生可做一二道题目试试,看会不会做,如果感到还有困难,那么再次进行阅读,再次尝试做题目。
)教师要求学生做类似例题的练习,并让他们说说是怎样想的,为什么这样做,以检查他们的自学效果。
)教师提一些关键性的问题,在师生的相互交流中,教师可做些点拨、归纳,以帮助学生系统地理解掌握自学内容,也可使学习困难者得到补偿学习。
.合作学习。对于一些“问题性”程度较高,个体学习、同化有困难的材料,教师可改变课堂组织形式,让学生开展合作学习,以促进他们在相互补充、互为启发中完成心理转化,学到知识。
例如,教学“连续退位减法”:
6300-5464=
师:个位
,不够减,向前一位借“
,差的个位上写
。那么,十位上、百位上应该填几呢?
随即,教师请学生
人一组开展合作学习。通过讨论,有的认为:十位上填
,百位上填
;有的认为十位上填
,百位上填
;还有的认为十位上填
,百位上填
。那么,十位上、百位上究竟应该填几呢?为什么?教师再次要求学生开展讨论,进行合作学习:看哪一组、哪一位同学讲得有道理。同学们经过两次合作学习,终于理解了“连续退位减法”的算理:十位上既要向前一位借“
”,又要借给后一位“
”,所以十位上应该是填
,百位上应该是填
。他们经验证也证实了这种计算方法是正确的。
.数形结合。数学主要是研究数与形的学科,学生的思维特点又处于形象思维向抽象思维过渡的阶段。因而,数形结合是学生最喜欢、最常用的一种学习数学的方法。
例如,用“形”来帮助学习“数”。当学生理解了正小数、正整数都是正数,负小数、负整数都是负数后,教师直接请学生比较下列每组数的大小:
学生先画出一数轴,再在上面标出
组数中的各个数。
然后,他们受到数轴及数轴上的数的刺激,发现正、负整数及零的大小比较方法(负整数<零<正整数,或在数轴上表示的数是左小右大),同样适用于正、负小数及零大小的比较,进而也找到了正、负小数及零大小比较的方法,并得出:
又如,用“数”来帮助学习“形”。学生学习长方形的面积,先是数面积,后来发现用算“数”(长×宽)的方法能很快地知道长方形的面积。
学生学习活动中的学习方法,并非只是某一种学习方法在起作用,而往往是几种方法在起共同的、相互的作用,“一法为主,多法并重”的学习活动,才更有助于学生实现学习心理的相互作用、互为转化,获得学习成功。学生在学习活动中,一方面要有较为充裕的学习时间,因此,教师要舍得花时间让学生去学习;另一方面,需要相互之间商量议论和合作学习,这样才容易互为启发、补充,形成学习方法和数学思想。
上海市青浦县教师进修学校
岳德明执笔
(本课题组成员:何雪芳
严玲莘彪
岳德明)欢迎您进入中国Linux大学, 目前我们的总注册用户数 29596, 总点击数 15554706
Google定制搜索: 2011年7月31日 星期天 | | | | | | | | |
[PATCH 1/3 v2] Merge mkubootimg tool for building U-Boot images
摘自: 被阅读次数: 50
由'机器人'于 2008-01-05 02:01:17 提供
Fri, 4 Jan 2008 11:26:09 -0600
Josh Boyer
Subject
[PATCH 1/3 v2] Merge mkubootimg tool for building U-Boot images
Several platforms require the mkimage tool to generate a uImage file that is
used with U-Boot.
This brings the mkimage tool in-kernel to enable building
those platforms without having mkimage externally provided.
The tool is named
mkubootimg for better clarity.
This is currently based off of the version found in U-Boot 1.3.1.
Signed-off-by: Josh Boyer jwboyer@linux.vnet.ibm.com
scripts/Makefile
scripts/mkubootimg/Makefile
scripts/mkubootimg/crc32.c
196 +++++++++++
scripts/mkubootimg/mkimage.c |
727 +++++++++++++++++++++++++++++++++++++++++++
scripts/mkubootimg/uimage.h
161 +++++++++
5 files changed, 1091 i ertio (+)
--- linux-2.6.orig/scripts/Makefile
+++ linux-2.6/scripts/Makefile
@ #64; -20,6 +20,7 @ #64; hostprogs-y += unifdef
subdir-$(CONFIG_MODVERSIONS) += genksyms
subdir-y
+subdir-y
+= mkubootimg
# Let clean descend into subdirs
subdir- += basic kconfig package
--- /dev/null
+++ linux-2.6/scripts/mkubootimg/Makefile
@ #64; -0,0 +1,6 @ #64;
+hostprogs-y := mkubootimg
+always
:= $(hostprogs-y)
+mkubootimg-objs := mkimage.o crc32.o
+HOSTCFLAGS_crc32.o := -DUSE_HOSTCC
--- /dev/null
+++ linux-2.6/scripts/mkubootimg/crc32.c
@ #64; -0,0 +1,196 @ #64;
+ * This file is derived from crc32.c from the zlib-1.1.3 distribution
+ * by Jean-loup Gailly and Mark Adler.
+/* crc32.c -- compute the CRC-32 of a data stream
+ * Copyright (C) 1995-1998 Mark Adler
+ * For conditio of distribution and use, see copyright notice in zlib.h
+#ifndef USE_HOSTCC /* Shut down "ANSI does not permit..." warnings */
+#include common.h
+#endif
+#include "zlib.h"
+#define local static
+#define ZEXPORT /* empty */
+u igned long crc32 (u igned long, co t u igned char *, u igned int);
+#ifdef DYNAMIC_CRC_TABLE
+local int crc_table_empty = 1;
+local uLongf crc_table[256];
+local void make_crc_table OF((void));
Generate a table for a byte-wise 32-bit CRC calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
Polynomials over GF(2) are represented in binary, one bit per coefficient,
with the lowest powers in the most significant bit.
Then adding polynomials
is just exclusive-or, and multiplying a polynomial by x is a right shift by
If we call the above polynomial p, and represent a byte as the
polynomial q, also with the lowest power in the most significant bit (so the
byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
where a mod b mea the remainder after dividing a by b.
This calculation is done using the shift-register method of multiplying and
taking the remainder.
The register is initialized to zero, and for each
incoming bit, x^32 is added mod p to the register if the bit is a one (where
x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
x (which is shifting right by one and adding x^32 mod p if the bit shifted
out is a one).
We start with the highest power (least significant bit) of
q and repeat for all eight bits of q.
The table is simply the CRC of all po ible eight bit values.
This is all
the information needed to generate CRC's on data a byte at a time for all
combinatio of CRC register values and incoming bytes.
+local void make_crc_table()
uLong c;
int n, k;
uLong poly;
/* polynomial exclusive-or pattern */
/* terms of polynomial defining this crc (except x^32): */
static co t Byte p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
/* make exclusive-or pattern from polynomial (0xedb88320L) */
poly = 0L;
for (n = 0; n sizeof(p)/sizeof(Byte); n++)
poly |= 1L (31 - p[n]);
for (n = 0; n 256; n++)
c = (uLong) +
for (k = 0; k 8; k++)
c = c &am 1 ? poly ^ (c 1) : c 1;
crc_table[n] = c;
crc_table_empty = 0;
+/* ========================================================================
+ * Table of CRC-32's of all single-byte values (made by make_crc_table)
+local co t uLongf crc_table[256] = {
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
0x35b5a8faL, 0x42b2986cL, 0xd c9d6L, 0xacbcf940L, 0x32d86ce3L,
0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
0xe10e9818L, 0x7f6a0d L, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
0x8 eb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4 30e2L,
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1 67f1L,
0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
0xcc0c7795L, 0x 0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3 eL,
0xb2bd0b28L, 0x2 45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
0x95bf4a82L, 0xe2b87a14L, 0x7 12baeL, 0x0cb61b38L, 0x92d28e9bL,
0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
0x37d83bf0L, 0xa9bcae53L, 0xde 9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
0x5d681b02L, 0x2a6f2b94L, 0xb40 e37L, 0xc30c8ea1L, 0x5a05df1bL,
0x2d02ef8dL
+#endif
+/* =========================================================================
+ * This function can be used by asm versio of crc32()
+co t uLongf * ZEXPORT get_crc_table()
+#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty) make_crc_table();
+#endif
return (co t uLongf *)crc_table;
+#endif
+/* ========================================================================= */
+#define DO1(buf) crc = crc_table[((int)crc ^ (*buf++)) &am 0xff] ^ (crc 8);
+#define DO2(buf)
DO1(buf); DO1(buf);
+#define DO4(buf)
DO2(buf); DO2(buf);
+#define DO8(buf)
DO4(buf); DO4(buf);
+/* ========================================================================= */
+uLong ZEXPORT crc32(uLong crc, co t Bytef *buf, uInt len)
+#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty)
make_crc_table();
+#endif
crc = crc ^ 0xffffffffL;
while (len = 8)
DO8(buf);
len -= 8;
if (len) do {
DO1(buf);
} while (--len);
return crc ^ 0xffffffffL;
+#if defined(CONFIG_CMD_JFFS2) || \
+ (defined(CONFIG_CMD_NAND) \
+ &am am !defined(CFG_NAND_LEGACY))
+/* No ones complement version. JFFS2 (and other things ?)
+ * don't use ones compliment in their CRC calculatio .
+uLong ZEXPORT crc32_no_comp(uLong crc, co t Bytef *buf, uInt len)
+#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty)
make_crc_table();
+#endif
while (len = 8)
DO8(buf);
len -= 8;
if (len) do {
DO1(buf);
} while (--len);
return crc;
+#endif
--- /dev/null
+++ linux-2.6/scripts/mkubootimg/mkimage.c
@ #64; -0,0 +1,727 @ #64;
+ * (C) Copyright 2000-2004
+ * DENX Software Engineering
+ * Wolfgang Denk, wd@denx.de
+ * All rights reserved.
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Lice e as
+ * published by the Free Software Foundatio either version 2 of
+ * the Lice e, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the
+ * GNU General Public Lice e for more details.
+ * You should have received a copy of the GNU General Public Lice e
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+#include errno.h
+#include fcntl.h
+#include < tdio.h
+#include < tdlib.h
+#include < tring.h
+#include < etinet/in.h
/* for host / network byte order conversio */
+#include < ys/mman.h
+#include < ys/stat.h
+#include time.h
+#include unistd.h
+#ifndef O_BINARY
/* should be define'd on __WIN32__ */
+#define O_BINARY 0
+#endif
+#include "uimage.h"
+#ifndef MAP_FAILED
+#define MAP_FAILED (-1)
+#endif
+static char *cmdname;
+extern u igned long crc32 (u igned long crc, co t char *buf, u igned int len);
+typedef struct table_entry {
+ int val;
/* as defined in image.h */
+ char * ame;
/* short (i ut) name
+ char *lname;
/* long (output) name
+} table_entry_t;
+static table_entry_t arch_name[] = {
{ IH_CPU_INVALID,
"Invalid CPU", },
{ IH_CPU_ALPHA,
"alpha", "Alpha", },
{ IH_CPU_ARM,
{ IH_CPU_I386,
"Intel x86", },
{ IH_CPU_IA64,
"ia64",
"IA64",
{ IH_CPU_M68K,
"m68k",
"MC68000", },
{ IH_CPU_MICROBLAZE, "microblaze", "MicroBlaze", },
{ IH_CPU_MIPS,
"MIPS",
{ IH_CPU_MIPS64,
"mi 64", "MIPS 64 Bit", },
{ IH_CPU_NIOS,
"nios",
"NIOS",
{ IH_CPU_NIOS2,
"nios2", "NIOS II", },
{ IH_CPU_PPC,
"PowerPC", },
{ IH_CPU_S390,
"s390",
"IBM S390", },
{ IH_CPU_SH,
"SuperH", },
{ IH_CPU_SPARC,
" arc", "SPARC", },
{ IH_CPU_SPARC64,
" arc64", "SPARC 64 Bit", },
{ IH_CPU_BLACKFIN, "blackfin", "Blackfin", },
{ IH_CPU_***R32,
"avr32", "***R32", },
+static table_entry_t os_name[] = {
{ IH_OS_INVALID, NULL,
"Invalid OS",
{ IH_OS_4_4BSD, "4_4 d", "4_4BSD",
{ IH_OS_ARTOS, "artos", "ARTOS",
{ IH_OS_DELL, "dell",
"Dell",
{ IH_OS_ESIX, "esix",
"Esix",
{ IH_OS_FREEBSD, "free d", "FreeBSD",
{ IH_OS_IRIX, "irix",
"Irix",
{ IH_OS_LINUX, "linux", "Linux",
{ IH_OS_LYNXOS, "lynxos", "LynxOS",
{ IH_OS_NCR, "ncr",
{ IH_OS_NETBSD, "net d", "NetBSD",
{ IH_OS_OPENBSD, "ope d", "OpenBSD",
{ IH_OS_PSOS, " os",
"pSOS",
{ IH_OS_QNX, "qnx",
{ IH_OS_RTEMS, "rtems", "RTEMS",
{ IH_OS_SCO, "sco",
{ IH_OS_SOLARIS, "solaris", "Solaris",
{ IH_OS_SVR4, "svr4",
"SVR4",
{ IH_OS_U_BOOT, "u-boot", "U-Boot",
{ IH_OS_VXWORKS, "vxworks", "VxWorks",
+static table_entry_t type_name[] = {
{ IH_TYPE_INVALID,
"Invalid Image", },
{ IH_TYPE_FILESYSTEM, "filesystem", "Filesystem Image", },
{ IH_TYPE_FIRMWARE,
"firmware",
"Firmware",
{ IH_TYPE_KERNEL,
"kernel",
"Kernel Image", },
{ IH_TYPE_MULTI,
"multi",
"Multi-File Image", },
{ IH_TYPE_RAMDISK,
"ramdisk",
"RAMDisk Image", },
{ IH_TYPE_SCRIPT,
"script",
"Script",
{ IH_TYPE_STANDALONE, "standalone", "Standalone Program", },
{ IH_TYPE_FLATDT,
"flat_dt",
"Flat Device Tree", },
+static table_entry_t comp_name[] = {
{ IH_COMP_NONE, "none",
"uncompre ed",
{ IH_COMP_BZIP2, "bzip2", "bzip2 compre ed", },
{ IH_COMP_GZIP, "gzip",
"gzip compre ed", },
+static void copy_file (int, co t char *, int);
+static void usage (void);
+static void print_header (image_header_t *);
+static void print_type (image_header_t *);
+static char *put_table_entry (table_entry_t *, char *, int);
+static char *put_arch (int);
+static char *put_type (int);
+static char *put_os
+static char *put_comp (int);
+static int get_table_entry (table_entry_t *, char *, char *);
+static int get_arch(char *);
+static int get_comp(char *);
+static int get_os
(char *);
+static int get_type(char *);
+static char *datafile;
+static char *imagefile;
+static int dflag
+static int eflag
+static int lflag
+static int vflag
+static int xflag
+static int opt_os
= IH_OS_LINUX;
+static int opt_arch = IH_CPU_PPC;
+static int opt_type = IH_TYPE_KERNEL;
+static int opt_comp = IH_COMP_GZIP;
+static image_header_t header;
+static image_header_t *hdr =
+main (int argc, char **argv)
+ int ifd;
+ uint32_t checksum;
+ uint32_t addr;
+ uint32_t e + struct stat uf;
+ u igned char *ptr;
+ char *endptr;
+ char *name = "";
+ cmdname = *argv;
+ addr = ep = 0;
+ while (--argc 0 &am am **++argv == '-') {
while (*++*argv) {
switch (**argv) {
case 'l':
lflag = 1;
case 'A':
if ((--argc = 0) ||
(opt_arch = get_arch(*++argv)) 0)
usage ();
goto NXTARG;
case 'C':
if ((--argc = 0) ||
(opt_comp = get_comp(*++argv)) 0)
usage ();
goto NXTARG;
case 'O':
if ((--argc = 0) ||
(opt_os = get_os(*++argv)) 0)
usage ();
goto NXTARG;
case 'T':
if ((--argc = 0) ||
(opt_type = get_type(*++argv)) 0)
usage ();
goto NXTARG;
case 'a':
if (--argc = 0)
usage ();
addr = strtoul ((char *) *++argv, &am endptr, 16);
if (*endptr) {
fprintf (stderr,
"%s: invalid load addre %s\n",
cmdname, *argv);
exit (EXIT_FAILURE);
goto NXTARG;
case 'd':
if (--argc = 0)
usage ();
datafile = *++argv;
dflag = 1;
goto NXTARG;
case 'e':
if (--argc = 0)
usage ();
ep = strtoul (*++argv, &am endptr, 16);
if (*endptr) {
fprintf (stderr,
"%s: invalid entry point %s\n",
cmdname, *argv);
exit (EXIT_FAILURE);
eflag = 1;
goto NXTARG;
case 'n':
if (--argc = 0)
usage ();
name = *++argv;
goto NXTARG;
case 'v':
vflag++;
case 'x':
xflag++;
default:
usage ();
+NXTARG:
+ if ((argc != 1) || ((lflag ^ dflag) == 0))
usage();
+ if (!eflag) {
ep = addr;
/* If XIP, entry point must be after the U-Boot header */
if (xflag)
ep += sizeof(image_header_t);
* If XIP, e ure the entry point is equal to the load addre plus
* the size of the U-Boot header.
+ if (xflag) {
if (ep != addr + sizeof(image_header_t)) {
fprintf (stderr,
"%s: For XIP, the entry point must be the load addr + %lu\n",
cmdname,
(u igned long)sizeof(image_header_t));
exit (EXIT_FAILURE);
+ imagefile = *argv;
+ if (lflag) {
ifd = open(imagefile, O_RDONLY|O_BINARY);
+ } else {
ifd = open(imagefile, O_RDWR|O_CREAT|O_TRUNC|O_BINARY, 0666);
+ if (ifd 0) {
fprintf (stderr, "%s: Can't open %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ if (lflag) {
int le +
char *data;
* list header information of existing image
if (fstat(ifd, &am uf) 0) {
fprintf (stderr, "%s: Can't stat %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
if ((u igned) uf.st_size sizeof(image_header_t)) {
fprintf (stderr,
"%s: Bad size: \"%s\" is no valid image\n",
cmdname, imagefile);
exit (EXIT_FAILURE);
ptr = (u igned char *)mmap(NULL, uf.st_size,
PROT_READ, MAP_SHARED, ifd, 0);
if ((caddr_t)ptr == (caddr_t)-1) {
fprintf (stderr, "%s: Can't read %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
* create copy of header so that we can blank out the
* checksum field for checking - this can't be done
* on the PROT_READ ma ed data.
memcpy (hdr, ptr, sizeof(image_header_t));
if (ntohl(hdr-ih_magic) != IH_MAGIC) {
fprintf (stderr,
"%s: Bad Magic Number: \"%s\" is no valid image\n",
cmdname, imagefile);
exit (EXIT_FAILURE);
data = (char *)hdr;
= sizeof(image_header_t);
checksum = ntohl(hdr-ih_hcrc);
hdr-ih_hcrc = htonl(0); /* clear for re-calculation */
if (crc32 (0, data, len) != checksum) {
fprintf (stderr,
"%s: ERROR: \"%s\" has bad header checksum!\n",
cmdname, imagefile);
exit (EXIT_FAILURE);
data = (char *)(ptr + sizeof(image_header_t));
= uf.st_size - sizeof(image_header_t) ;
if (crc32 (0, data, len) != ntohl(hdr-ih_dcrc)) {
fprintf (stderr,
"%s: ERROR: \"%s\" has corrupted data!\n",
cmdname, imagefile);
exit (EXIT_FAILURE);
/* for multi-file images we need the data part, too */
print_header ((image_header_t *)ptr);
(void) munmap((void *)ptr, uf.st_size);
(void) close (ifd);
exit (EXIT_SUCCESS);
* Must be -w then:
* write dummy header, to be fixed later
+ memset (hdr, 0, sizeof(image_header_t));
+ if (write(ifd, hdr, sizeof(image_header_t)) != sizeof(image_header_t)) {
fprintf (stderr, "%s: Write error on %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ if (opt_type == IH_TYPE_MULTI || opt_type == IH_TYPE_SCRIPT) {
char *file = datafile;
uint32_t size;
for ( ) {
char *sep = NULL;
if (file) {
if ((sep = strchr(file, ':')) != NULL) {
*sep = '\0';
if (stat (file, &am uf) 0) {
fprintf (stderr, "%s: Can't stat %s: %s\n",
cmdname, file, strerror(errno));
exit (EXIT_FAILURE);
size = htonl( uf.st_size);
} else {
size = 0;
if (write(ifd, (char *)&am ize, sizeof(size)) != sizeof(size)) {
fprintf (stderr, "%s: Write error on %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
if (!file) {
if (sep) {
*sep = ':';
file = sep + 1;
} else {
file = NULL;
file = datafile;
for ( ) {
char *sep = strchr(file, ':');
if (sep) {
*sep = '\0';
copy_file (ifd, file, 1);
*sep++ = ':';
file = se +
} else {
copy_file (ifd, file, 0);
+ } else {
copy_file (ifd, datafile, 0);
+ /* We're a bit of paranoid */
+#if defined(_POSIX_SYNCHRONIZED_IO) &am am !defined(__sun__) &am am !defined(__FreeBSD__) &am am !defined(__APPLE__)
+ (void) fdatasync (ifd);
+ (void) fsync (ifd);
+#endif
+ if (fstat(ifd, &am uf) 0) {
fprintf (stderr, "%s: Can't stat %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ ptr = (u igned char *)mmap(NULL, uf.st_size,
PROT_READ|PROT_WRITE, MAP_SHARED, ifd, 0);
+ if (ptr == (u igned char *)MAP_FAILED) {
fprintf (stderr, "%s: Can't map %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ hdr = (image_header_t *)ptr;
+ checksum = crc32 (0,
(co t char *)(ptr + sizeof(image_header_t)),
+ uf.st_size - sizeof(image_header_t)
+ /* Build new header */
+ hdr-ih_magic = htonl(IH_MAGIC);
+ hdr-ih_time
= htonl( uf.st_mtime);
+ hdr-ih_size
= htonl( uf.st_size - sizeof(image_header_t));
+ hdr-ih_load
= htonl(addr);
+ hdr-ih_ep
= htonl(ep);
+ hdr-ih_dcrc
= htonl(checksum);
+ hdr-ih_os
= opt_o + hdr-ih_arch
= opt_arch;
+ hdr-ih_type
= opt_type;
+ hdr-ih_comp
= opt_com +
+ strncpy((char *)hdr-ih_name, name, IH_NMLEN);
+ checksum = crc32(0,(co t char *)hdr,sizeof(image_header_t));
+ hdr-ih_hcrc = htonl(checksum);
+ print_header (hdr);
+ (void) munmap((void *)ptr, uf.st_size);
+ /* We're a bit of paranoid */
+#if defined(_POSIX_SYNCHRONIZED_IO) &am am !defined(__sun__) &am am !defined(__FreeBSD__) &am am !defined(__APPLE__)
+ (void) fdatasync (ifd);
+ (void) fsync (ifd);
+#endif
+ if (close(ifd)) {
fprintf (stderr, "%s: Write error on %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ exit (EXIT_SUCCESS);
+static void
+copy_file (int ifd, co t char *datafile, int pad)
+ int dfd;
+ struct stat uf;
+ u igned char *ptr;
+ int tail;
+ int zero = 0;
+ int offset = 0;
+ int size;
+ if (vflag) {
fprintf (stderr, "Adding Image %s\n", datafile);
+ if ((dfd = open(datafile, O_RDONLY|O_BINARY)) 0) {
fprintf (stderr, "%s: Can't open %s: %s\n",
cmdname, datafile, strerror(errno));
exit (EXIT_FAILURE);
+ if (fstat(dfd, &am uf) 0) {
fprintf (stderr, "%s: Can't stat %s: %s\n",
cmdname, datafile, strerror(errno));
exit (EXIT_FAILURE);
+ ptr = (u igned char *)mmap(NULL, uf.st_size,
PROT_READ, MAP_SHARED, dfd, 0);
+ if (ptr == (u igned char *)MAP_FAILED) {
fprintf (stderr, "%s: Can't read %s: %s\n",
cmdname, datafile, strerror(errno));
exit (EXIT_FAILURE);
+ if (xflag) {
u igned char *p = NULL;
* XIP: do not a end the image_header_t at the
* begi ing of the file, but co ume the ace
* reserved for it.
if ((u igned) uf.st_size sizeof(image_header_t)) {
fprintf (stderr,
"%s: Bad size: \"%s\" is too small for XIP\n",
cmdname, datafile);
exit (EXIT_FAILURE);
for (p=ptr; p ptr+sizeof(image_header_t); p++) {
if ( *p != 0xff ) {
fprintf (stderr,
"%s: Bad file: \"%s\" has invalid buffer for XIP\n",
cmdname, datafile);
exit (EXIT_FAILURE);
offset = sizeof(image_header_t);
+ size = uf.st_size - offset;
+ if (write(ifd, ptr + offset, size) != size) {
fprintf (stderr, "%s: Write error on %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ if (pad &am am ((tail = size % 4) != 0)) {
if (write(ifd, (char *)&am zero, 4-tail) != 4-tail) {
fprintf (stderr, "%s: Write error on %s: %s\n",
cmdname, imagefile, strerror(errno));
exit (EXIT_FAILURE);
+ (void) munmap((void *)ptr, uf.st_size);
+ (void) close (dfd);
+static void
+usage (void)
+ fprintf (stderr, "Usage: %s -l image\n"
-l == list image header information\n"
%s [-x] -A arch -O os -T type -C comp "
"-a addr -e ep -n name -d data_file[:data_file...] image\n",
cmdname, cmdname);
+ fprintf (stderr, "
-A == set architecture to 'arch'\n"
-O == set operating system to 'os'\n"
-T == set image type to 'type'\n"
-C == set compre ion type 'comp'\n"
-a == set load addre to 'addr' (hex)\n"
-e == set entry point to 'ep' (hex)\n"
-n == set image name to 'name'\n"
-d == use image data from 'datafile'\n"
-x == set XIP (execute in place)\n"
+ exit (EXIT_FAILURE);
+static void
+print_header (image_header_t *hdr)
+ time_t timestam + uint32_t size;
+ timestamp = (time_t)ntohl(hdr-ih_time);
+ size = ntohl(hdr-ih_size);
+ printf ("Image Name:
%.*s\n", IH_NMLEN, hdr-ih_name);
+ printf ("Created:
%s", ctime(&am timestamp));
+ printf ("Image Type:
"); print_type(hdr);
+ printf ("Data Size:
%d Bytes = %.2f kB = %.2f MB\n",
size, (double)size / 1.024e3, (double)size / 1.048576e6 );
+ printf ("Load Addre : 0x%08X\n", ntohl(hdr-ih_load));
+ printf ("Entry Point:
0x%08X\n", ntohl(hdr-ih_ep));
+ if (hdr-ih_type == IH_TYPE_MULTI || hdr-ih_type == IH_TYPE_SCRIPT) {
int i, ptr +
uint32_t po +
uint32_t *len_ptr = (uint32_t *) (
(u igned long)hdr + sizeof(image_header_t)
/* determine number of images first (to calculate image offsets) */
for (i=0; len_ptr[i]; ++i) /* null pointer terminates list */
ptrs = i;
/* null pointer terminates list */
pos = sizeof(image_header_t) + ptrs * sizeof(long);
printf ("Contents:\n");
for (i=0; len_ptr[i]; ++i) {
size = ntohl(len_ptr[i]);
printf ("
Image %d: %8d Bytes = %4d kB = %d MB\n",
i, size, size10, size20);
if (hdr-ih_type == IH_TYPE_SCRIPT &am am i 0) {
* the user may need to know offsets
* if pla ing to do something with
* multiple files
printf ("
Offset = %08X\n", pos);
/* copy_file() will pad the first files to even word align */
size += 3;
size &am = ~3;
pos += size;
+static void
+print_type (image_header_t *hdr)
+ printf ("%s %s %s (%s)\n",
put_arch (hdr-ih_arch),
(hdr-ih_os
put_type (hdr-ih_type),
put_comp (hdr-ih_comp)
+static char *put_arch (int arch)
+ return (put_table_entry(arch_name, "Unknown Architecture", arch));
+static char *put_os (int os)
+ return (put_table_entry(os_name, "Unknown OS", os));
+static char *put_type (int type)
+ return (put_table_entry(type_name, "Unknown Image", type));
+static char *put_comp (int comp)
+ return (put_table_entry(comp_name, "Unknown Compre ion", comp));
+static char *put_table_entry (table_entry_t *table, char *msg, int type)
+ for (; table-val=0; ++table) {
if (table-val == type)
return (table-lname);
+ return (msg);
+static int get_arch(char *name)
+ return (get_table_entry(arch_name, "CPU", name));
+static int get_comp(char *name)
+ return (get_table_entry(comp_name, "Compre ion", name));
+static int get_os (char *name)
+ return (get_table_entry(os_name, "OS", name));
+static int get_type(char *name)
+ return (get_table_entry(type_name, "Image", name));
+static int get_table_entry (table_entry_t *table, char *msg, char *name)
+ table_entry_t *t;
+ int first = 1;
+ for (t=table; t-val=0; ++t) {
if (t-> ame &am am strcasecmp(t-> ame, name)==0)
return (t-val);
+ fprintf (stderr, "\nInvalid %s Type - valid names are", msg);
+ for (t=table; t-val=0; ++t) {
if (t-> ame == NULL)
continue;
fprintf (stderr, "%c %s", (first) ? ':' : ',', t-> ame);
first = 0;
+ fprintf (stderr, "\n");
+ return (-1);
--- /dev/null
+++ linux-2.6/scripts/mkubootimg/uimage.h
@ #64; -0,0 +1,161 @ #64;
+ * (C) Copyright 2000-2005
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Lice e as
+ * published by the Free Software Foundatio either version 2 of
+ * the Lice e, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the
+ * GNU General Public Lice e for more details.
+ * You should have received a copy of the GNU General Public Lice e
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ ********************************************************************
+ * NOTE: This header file defines an interface to U-Boot. Including
+ * this (unmodified) header file in another file is co idered normal
+ * use of U-Boot, and does *not* fall under the heading of "derived
+ * work".
+ ********************************************************************
+#ifndef __IMAGE_H__
+#define __IMAGE_H__
+ * Operating System Codes
+#define IH_OS_INVALID
0 /* Invalid OS */
+#define IH_OS_OPENBSD
1 /* OpenBSD */
+#define IH_OS_NETBSD
2 /* NetBSD */
+#define IH_OS_FREEBSD
3 /* FreeBSD */
+#define IH_OS_4_4BSD
4 /* 4.4BSD */
+#define IH_OS_LINUX
5 /* Linux */
+#define IH_OS_SVR4
6 /* SVR4
+#define IH_OS_ESIX
7 /* Esix
+#define IH_OS_SOLARIS
8 /* Solaris */
+#define IH_OS_IRIX
9 /* Irix
+#define IH_OS_SCO
10 /* SCO
+#define IH_OS_DELL
11 /* Dell
+#define IH_OS_NCR
12 /* NCR
+#define IH_OS_LYNXOS
13 /* LynxOS */
+#define IH_OS_VXWORKS
14 /* VxWorks */
+#define IH_OS_PSOS
15 /* pSOS
+#define IH_OS_QNX
16 /* QNX
+#define IH_OS_U_BOOT
17 /* Firmware */
+#define IH_OS_RTEMS
18 /* RTEMS */
+#define IH_OS_ARTOS
19 /* ARTOS */
+#define IH_OS_UNITY
20 /* Unity OS */
+ * CPU Architecture Codes (su orted by Linux)
+#define IH_CPU_INVALID
0 /* Invalid CPU */
+#define IH_CPU_ALPHA
1 /* Alpha */
+#define IH_CPU_ARM
2 /* ARM
+#define IH_CPU_I386
3 /* Intel x86 */
+#define IH_CPU_IA64
4 /* IA64
+#define IH_CPU_MIPS
5 /* MIPS
+#define IH_CPU_MIPS64
6 /* MIPS
64 Bit */
+#define IH_CPU_PPC
7 /* PowerPC */
+#define IH_CPU_S390
8 /* IBM S390 */
+#define IH_CPU_SH
9 /* SuperH */
+#define IH_CPU_SPARC
10 /* Sparc */
+#define IH_CPU_SPARC64
11 /* Sparc 64 Bit */
+#define IH_CPU_M68K
12 /* M68K
+#define IH_CPU_NIOS
13 /* Nios-32 */
+#define IH_CPU_MICROBLAZE 14 /* MicroBlaze
+#define IH_CPU_NIOS2
15 /* Nios-II */
+#define IH_CPU_BLACKFIN
16 /* Blackfin */
+#define IH_CPU_***R32
17 /* ***R32 */
+#define IH_CPU_ST200
18 /* STMicroelectronics ST200
+ * Image Types
+ * "Standalone Programs" are directly ru able in the environment
+ * provided by U-Boot; it is expected that (if they behave
+ * well) you can continue to work in U-Boot after return from
+ * the Standalone Program.
+ * "OS Kernel Images" are usually images of some Embedded OS which
+ * will take over control completely. Usually these programs
+ * will i tall their own set of exception handlers, device
+ * drivers, set up the MMU, etc. - this mea , that you ca ot
+ * expect to re-enter U-Boot except by resetting the CPU.
+ * "RAMDisk Images" are more or le just data blocks, and their
+ * parameters (addre , size) are pa ed to an OS kernel that is
+ * being started.
+ * "Multi-File Images" contain several images, typically an OS
+ * (Linux) kernel image and one or more data images like
+ * RAMDisks. This co truct is useful for i tance when you want
+ * to boot over the network using BOOTP etc., where the boot
+ * server provides just a single image file, but you want to get
+ * for i tance an OS kernel and a RAMDisk image.
+ * "Multi-File Images" start with a list of image sizes, each
+ * image size (in bytes) ecified by an "uint32_t" in network
+ * byte order. This list is terminated by an "(uint32_t)0".
+ * Immediately after the terminating 0 follow the images, one by
+ * one, all aligned on "uint32_t" boundaries (size rounded up to
+ * a multiple of 4 bytes - except for the last file).
+ * "Firmware Images" are binary images containing firmware (like
+ * U-Boot or FPGA images) which usually will be programmed to
+ * flash memory.
+ * "Script files" are command sequences that will be executed by
+ * U-Boot's command interpreter; this feature is e ecially
+ * useful when you configure U-Boot to use a real shell (hush)
+ * as command interpreter (= Shell Scripts).
+#define IH_TYPE_INVALID
0 /* Invalid Image
+#define IH_TYPE_STANDALONE 1 /* Standalone Program
+#define IH_TYPE_KERNEL
2 /* OS Kernel Image
+#define IH_TYPE_RAMDISK
3 /* RAMDisk Image
+#define IH_TYPE_MULTI
4 /* Multi-File Image
+#define IH_TYPE_FIRMWARE 5 /* Firmware Image
+#define IH_TYPE_SCRIPT
6 /* Script file
+#define IH_TYPE_FILESYSTEM 7 /* Filesystem Image (any type) */
+#define IH_TYPE_FLATDT
8 /* Binary Flat Device Tree Blob */
+ * Compre ion Types
+#define IH_COMP_NONE
Compre ion Used */
+#define IH_COMP_GZIP
1 /* gzip
Compre ion Used */
+#define IH_COMP_BZIP2
2 /* bzip2 Compre ion Used */
+#define IH_MAGIC 0x27051956 /* Image Magic Number
+#define IH_NMLEN
32 /* Image Name Length
+ * all data in network byte order (aka natural aka bigendian)
+typedef struct image_header {
+ uint32_t ih_magic; /* Image Header Magic Number */
+ uint32_t ih_hcrc; /* Image Header CRC Checksum */
+ uint32_t ih_time; /* Image Creation Timestamp */
+ uint32_t ih_size; /* Image Data Size
+ uint32_t ih_load; /* Data
Addre */
+ uint32_t ih_e /* Entry Point Addre */
+ uint32_t ih_dcrc; /* Image Data CRC Checksum */
+ uint8_t
ih_o /* Operating System
+ uint8_t
ih_arch; /* CPU architecture
+ uint8_t
ih_type; /* Image Type
+ uint8_t
ih_com /* Compre ion Type
+ uint8_t
ih_name[IH_NMLEN]; /* Image Name
+} image_header_t;
+#endif /* __IMAGE_H__ */
To u u cribe from this list: send the line "u u cribe linux-kernel" in
the body of a me age to majordomo@vger.kernel.org
More majordomo info at
Please read the FAQ at
原文链接:
www.chineselinuxuniversity.net由一个Linux爱好者创办
Copyright 2006 Chinese Linux University, All Rights Reserved
ICP备案编号: