《ARM嵌入式Linux系统开发从入门到精通》勘误
很高兴收到第一位读者的勘误信,内容如下:
看了你的书觉得不错,有点勘误给您指出来 ,P41页#../bulid-gcc/configure........应该改为#../gcc-3.3.6/configure......
在42页中书上的代码写的 都是2.2.3版本/不过你光盘里面的源码是2.3.2版本的//
结论:P41页#../bulid-gcc/configure........应该改为#../gcc-3.3.6/configure......
特别感谢这位读者,将赠送该书一本。
by mikelyf | 2007-9-20 12:10:00 |
阅读全文(1037) |
回复(37) |
引用通告(0) |
编辑
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
下面是一位读者的来信,非常感谢!
发现了三个地方有问题,希望该书下个版本能更改过来。
(一)、
P43,表2.2
linux-libc-headers-2.6.12.0.tar.bz2,原书写的下载地址为ftp.gnu.org
应更正为:
下载地址:ftp://ftp.lfs-matrix.net/pub/linux-libc-headers/
此外,建议其他几个文件的下载地址最好写详细些,例如gcc-3.3.6.tar.gz 原书写的下载地址ftp.gnu.org
建议写为: http://ftp.gnu.org/gnu/gcc/gcc-3.3.6.tar.gz
(二)、
P105,第9行,myroofs/sbin应该为myroofs/user/sbin,事实上,在实际编译的时候,根本没有书本上P105第6行
的user/bin和usr/sbin,不知道为何?在编译中还会出现如下错误:
applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables
applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
applets/applets.c:21:2: error: #error Aborting compilation.
make[1]: *** [applets/applets.o] Error 1
修改文件 applets/applets.c ,将
#error Aborting compilation.
注释掉:
/*#error Aborting compilation.*/
编译才能成功,
而且,关于busybox的配置,书上写的不是很清楚。建议写详细点。
给出以下参考:
ARCH =arm
CROSS_COMPILE = /usr/local/arm/3.3.2/bin/arm-linux-
3.定制 busybox
#make menuconfig
设置静态编译方式
# make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs) //(1)
Installation Options --->
[*] Don't use /usr //(2)
Linux System Utilities --->
[*] mdev //(3)
[*] Support /etc/mdev.conf
[*] Support command execution at device addition/removal
Shells --->
Choose your default shell (msh) ---> //(4)
4.执行 make 编译
#make
编译出错, 信息如下:
applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables
applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
applets/applets.c:21:2: error: #error Aborting compilation.
make[1]: *** [applets/applets.o] Error 1
//////////////////////////////////////////////////////////////////////////////////
make[1]: *** [miscutils/taskset.o] Error 1
make: *** [miscutils] Error 2
make menuconfig
找到[Miscellaneous Utilities],去掉[task set]
//////////////////////////////////////////////////////////////////////////////
按照提示,修改 scripts/trylink, 将此文件里面有 -Wl,--gc-sections 的行都删除掉,
然后重新 make
#make
还是出错, 信息如下:
applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables
applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
applets/applets.c:21:2: error: #error Aborting compilation.
make[1]: *** [applets/applets.o] Error 1
make: *** [applets] Error 2
修改文件 applets/applets.c 第 21 行, 将
#error Aborting compilation.
注释掉:
/*#error Aborting compilation.*/
执行 make 重新编译
#make
编译通过, busybox 被生成了, 然后执行
#make install
busybox 就被安装到默认的临时目录 _install 下了
(三)、p44,倒数第11行,TARGET=arm-linux-,运行arm.sh后,
creating libtool
updating cache ./config.cache
loading cache ./config.cache
configure: error: Unrecognized target system type; please check config.sub.
make: *** [configure-bfd] 错误 1
应该为:TARGET=arm-linux-
by
mikelyf |
2008-10-16 16:52:00 |
个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
建一个qq书友群吧,不然会忙死你的.
ps:用cygwin的那个朋友,只要用chmod改下属性777就可以了
以下为blog主人的回复:
你的建议很好,我们已经建了QQ群,群号:6525774,欢迎你的加入!
by
阿达(游客) |
2008-9-26 14:55:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
Mike好:
前一阵子好像网站down了吧.
看到这么多留言和回复,感觉你的售后服务还是蛮到位的.不过这也不是个办法.我建议你建一个书友qq群,其实有些问题相互问一下,是可以解决的.
ps:前面有位用cygwin的朋友,只要把当前目录的属性chmod为777就有权限了.
以下为blog主人的回复:
谢谢你的建议,之前朋友说过让我建一个QQ群,不过由于太忙,没时间挂QQ,你要是方便可以帮忙弄一个QQ群,帮我收集以下读者的问题,然后我和你直接交流就可以,看你有没有兴趣,前段时间blog断了一段时间。
by
阿达(游客) |
2008-9-26 14:50:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
谢谢李老师。我已经通过crosstool成功的建立交叉编译环境。不过2.2.2中3中的配置文件TARGET=arm-linux- 应改为TARGET=arm-linux 即去掉linux后的-才会编译成功。
以下为blog主人的回复:
这是本书的一个错误,的确正如你说,应该是TARGET=arm-linux,谢谢你的指证!
by
killercyp(游客) |
2008-7-26 18:45:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
李老师您好!大家基本上都在分步构建交叉编译环境时都在编译glibc时遇到了同样的问题,您说可能是glibc的bug。有没有什么办法可以跳过这个bug,让大家可以用分步的办法将交叉编译环境构建起来。
以下为blog主人的回复:
应该可以通过注释掉出错的代码可用解决这个问题。
by
killercyp(游客) |
2008-7-24 21:38:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
李老师您好!您的这本书写的非常实用,对我的帮助很大,我非常感谢您!我在执行本书中2.2.2中的4.执行脚本时./arm.sh出错。错误信息为:configure: error : unrecognized target system type; please check config.sub.我应该怎么办?希望李老师指教,谢谢诶
!
以下为blog主人的回复:
请检查一下你的配置文件是否正确。
by
killercyp(游客) |
2008-7-24 21:31:00 | 个人主页 |
引用 |
返回 |
删除 |
回复编译内核的问题
李老师,你好,我参考你出版的:《ARM嵌入式Linux系统开发从入门到精通》一书编译内核时出现一些问题。虚拟机上的linux系统是redhat linux enterprise as 4.0(内核是2.6.9.5-el),想编译的内核是linux-2.6.10,按照你书中P88-P97的步骤和方法出现如下错误:(交叉编译器crosstool是s3c2410自带的,工作正常)
#cd linux2-6-10
#make mrproper
#cp arch/arm/configs/smdk2410_defconfig .config
#make menuconfig
HOSTCC scripts/basic/fixdep
/bin/sh:scripts/basic/fixdep:cannot execute binary file
make[1]:***[scripts/basic/fixdep] Error 126
make:***[scripts_basic]Error 2
弄不清楚这是什么问题,请老师指点
以下为blog主人的回复:
请确认一下你的编译内核配置文件是否正确,其次确认你内核的根目录下Makefile的交叉编译器和CPU类型是否配置正确。
by
东少(游客) |
2008-7-11 11:00:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
李老师:
您好! 我是您的一位忠实读者。想问您的《ARM嵌入式LINUX系统开发入门到精通》中提及的GNU make3.79或更新,GCC3.2或更新,GNU binutils 2.13 或更新 在那里下载
谢谢!
以下为blog主人的回复:
一般在
ftp.gnu.org 站点上进行下载。
by
zhaoch888 |
2008-7-10 11:51:00 |
个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
以下引用xwf72(游客)在2007-12-5 20:19:00发表的评论:我在做到 40p 时 输入命令是:
#make ARCH=arm COSS_COMPLILE=arm-linux- menuconfig 后检查目录include/linux下是否有 version.h 和 autoconf.h时候,只能看到有 autoconf.h 而看不到version.h 不知道这个是为什么?
以下为blog主人的回复: 不好意思,这是本书出现的一个失误,你需要执行make编译之后才会产生version.h文件。
李老师,可不可以说得具体点啊,我也是出现这种问题,配置完内核以后,我没有出现version.h和autoconf.h文件,现在应该怎么做才能有呢,谢谢!
以下为blog主人的回复:
需要编译内核。
by
陈兵(游客) |
2008-6-27 17:27:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
我的电子邮件地址为:bwm_007@163.com
by
bwm(游客) |
2008-5-29 15:13:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
李老师:
你好!我完全按照您在书中的步骤进行交叉编译环境的建立,但是在编译glibc-2.3.2这一步的时候老是出现一下错误:
/tmp/ccoawU3W.s: Assembler messages:
/tmp/ccoawU3W.s:71: Error: junk at end of line, first unrecognized character is `,'
/tmp/ccoawU3W.s:73: Error: junk at end of line, first unrecognized character is `,'
make[2]: *** [/home/honghong/Basic_experiments/cross-tool/build-tools/build-glibc/intl/localealias.o] 错误 1
make[2]: Leaving directory `/home/honghong/Basic_experiments/cross-tool/build-tools/glibc-2.3.2/intl'
make[1]: *** [intl/subdir_lib] 错误 2
make[1]: Leaving directory `/home/honghong/Basic_experiments/cross-tool/build-tools/glibc-2.3.2'
make: *** [all] 错误 2
不知该怎么办,还要请教李老师啊,多谢啦!
以下为blog主人的回复:
该问题好多读者也遇到了,本人怀疑是glibc的一个bug,建议你使用crosstool工具编译来制作交叉编译器,这样就可以验证该glibc是否可以被正确运行。
by
bwm(游客) |
2008-5-29 15:08:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
我有个疑问,在本书中提到的liunx是那种Linux呢?
因为linux有好多版本的啊,什么uclinux,rtlinux在文中却没有说明.
以下为blog主人的回复:
你好,书中所用Linux是基于标准Linux内核的Linux操作系统,而uclinux,rtlinux等是经过修改标准Linux内核后的操作系统。
by
阿达(游客) |
2008-5-26 8:52:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》
我是初学者,购买了您的书,能否告之哪里可购买S3C2410开发板(与您书中技术指标要求一致),按书中指导做下实验.请老师于百忙之中指导下发到我邮箱mike.choo@vip.163.com 非常感谢! 祝好! 朱
by
mike.choo(游客) |
2008-5-24 13:25:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
老师你好,我刚刚买了你的书,在做p41时出现以下错误,麻烦老师帮我分析一下,谢谢!!!
/tmp/ccSChCZL.s: Assembler messages:
/tmp/ccSChCZL.s:36: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:37: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:38: Error: no such instruction: `stmfd sp!,{r4,r5,lr}'
/tmp/ccSChCZL.s:39: Error: no such instruction: `ldr r5,.L10'
/tmp/ccSChCZL.s:40: Error: no such instruction: `ldrb r3,[r5,'
/tmp/ccSChCZL.s:41: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:42: Error: no such instruction: `ldmnefd sp!,{r4,r5,pc}'
/tmp/ccSChCZL.s:43: Error: no such instruction: `ldr r4,.L10+4'
/tmp/ccSChCZL.s:44: Error: no such instruction: `ldr r3,[r4,'
/tmp/ccSChCZL.s:45: Error: no such instruction: `ldr r2,[r3,'
/tmp/ccSChCZL.s:46: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:47: Error: no such instruction: `beq .L9'
/tmp/ccSChCZL.s:49: Error: no such instruction: `ldr r3,[r4,'
/tmp/ccSChCZL.s:50: Error: too many memory references for `add'
/tmp/ccSChCZL.s:51: Error: invalid char '[' beginning operand 2 `[r4'
/tmp/ccSChCZL.s:52: Error: too many memory references for `mov'
/tmp/ccSChCZL.s:53: Error: too many memory references for `mov'
/tmp/ccSChCZL.s:54: Error: no such instruction: `ldr r3,[r4,'
/tmp/ccSChCZL.s:55: Error: no such instruction: `ldr r2,[r3,'
/tmp/ccSChCZL.s:56: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:57: Error: no such instruction: `bne .L6'
/tmp/ccSChCZL.s:59: Error: no such instruction: `ldr r3,.L10+8'
/tmp/ccSChCZL.s:60: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:61: Error: no such instruction: `ldrne r0,.L10+12'
/tmp/ccSChCZL.s:62: Error: no such instruction: `movne lr,pc'
/tmp/ccSChCZL.s:63: Error: no such instruction: `movne pc,r3'
/tmp/ccSChCZL.s:65: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:66: Error: invalid char '[' beginning operand 2 `[r5'
/tmp/ccSChCZL.s:67: Error: no such instruction: `ldmfd sp!,{r4,r5,pc}'
/tmp/ccSChCZL.s:78: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:79: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:80: Error: invalid char '[' beginning operand 2 `[sp'
/tmp/ccSChCZL.s:82: Error: no such instruction: `bl __do_global_dtors_aux'
/tmp/ccSChCZL.s:84: Error: no such instruction: `ldr pc,[sp],'
/tmp/ccSChCZL.s:90: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:91: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:92: Error: no such instruction: `ldr r3,.L16'
/tmp/ccSChCZL.s:93: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:94: Error: invalid char '[' beginning operand 2 `[sp'
/tmp/ccSChCZL.s:95: Error: no such instruction: `ldr r0,.L16+4'
/tmp/ccSChCZL.s:96: Error: no such instruction: `ldr r1,.L16+8'
/tmp/ccSChCZL.s:97: Error: no such instruction: `movne lr,pc'
/tmp/ccSChCZL.s:98: Error: no such instruction: `movne pc,r3'
/tmp/ccSChCZL.s:100: Error: no such instruction: `ldr r0,.L16+12'
/tmp/ccSChCZL.s:101: Error: no such instruction: `ldr r3,[r0,'
/tmp/ccSChCZL.s:102: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:103: Error: no such instruction: `ldreq pc,[sp],'
/tmp/ccSChCZL.s:104: Error: no such instruction: `ldr r3,.L16+16'
/tmp/ccSChCZL.s:105: Error: expecting operand after ','; got nothing
/tmp/ccSChCZL.s:106: Error: no such instruction: `ldreq pc,[sp],'
/tmp/ccSChCZL.s:107: Error: no such instruction: `ldr lr,[sp],'
/tmp/ccSChCZL.s:108: Error: no such instruction: `b _Jv_RegisterClasses'
/tmp/ccSChCZL.s:120: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:121: Warning: rest of line ignored; first ignored character is `@'
/tmp/ccSChCZL.s:122: Error: invalid char '[' beginning operand 2 `[sp'
/tmp/ccSChCZL.s:124: Error: no such instruction: `bl frame_dummy'
/tmp/ccSChCZL.s:126: Error: no such instruction: `ldr pc,[sp],'
make[1]: *** [crtbegin.o] Error 1
make[1]: Leaving directory `/home/whb/armlinux/build-tools/build-gcc/gcc'
make: *** [all-gcc] Error 2
[root@localhost build-gcc]#
以下为blog主人的回复:
该问题好多读者也遇到了,本人怀疑是glibc的一个bug,建议你使用crosstool工具编译来制作交叉编译器,这样就可以验证该glibc是否可以被正确运行。
by
读者(游客) |
2008-5-21 22:52:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
你好,我在分步构建交叉编译链时 出现了一个问题
在这本书的40页, 配置编译内核使其生成正确的头文件时, 配置内核选择处理器的类型 在 ARM System Type下面没有Samsung S3C2410, 只有 Surrport ARM6 processor 和 Surrport ARM9 processor 和Surrport StrongARM processor
这是为什么?希望能解答!
by
Tony(游客) |
2008-5-21 21:35:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
您好,我在参考该书的61页到72页将u-boot移植到s3c2410时,遇到一个问题。在pc上交叉编译时,出现如下错误:(代码的完全按照书中所述、交叉编译器工作正常)
nand.c:41:error:'CFG_NAND_BASE' undecleared here(not in a function)
nand.c:41:error: initializer element is not constant
nand.c:41:error:(near initialization for 'base_address[0]')
make[1]:***[nand.o] Error 1
在u-boot源代码检查CFG_NAND_BASE时,发现有多个头文件定义了它,但都没有用到这些头文件,请问CFG_NAND_BASE 是不是要根据目标板自己定义?
以下为blog主人的回复:
是的
by
东东(游客) |
2008-5-17 9:32:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
最近在做建立交叉编译链安装glibc时,make后有这样的错误:
/tmp/ccuvNa6j.s: Assembler messages:
/tmp/ccuvNa6j.s:71: Error: junk at end of line, first unrecognized character is `,'
/tmp/ccuvNa6j.s:73: Error: junk at end of line, first unrecognized character is `,'
make[2]: *** [/home/chenxunuo/armlinux/build-tools/build-glibc/intl/localealias.o] 错误 1
make[2]: Leaving directory `/home/chenxunuo/armlinux/build-tools/glibc-2.3.2/intl'
make[1]: *** [intl/subdir_lib] 错误 2
make[1]: Leaving directory `/home/chenxunuo/armlinux/build-tools/glibc-2.3.2'
make: *** [all] 错误 2
请问怎么解决?谢谢!
by
aNuo(游客) |
2008-5-10 0:05:00 | 个人主页 |
引用 |
返回 |
删除 |
回复新手请教
你好,
我两周前买了你的书,感觉很好。但因为此前对linux下的驱动开发不懂,所以现在有一些基本操作不会。能否指教?
开发linux下的驱动是不是应该这样:
1. 写所有需要的函数;
2. 编译成.object文件;
3. 当成模块添加的linux里面;
但是第三步我不知道具体该怎么做,能指导一下吗?
以下为blog主人的回复:
编写驱动程序不像你说的那么简单的三步,一般需要理解硬件实现原理,根据硬件功能设计驱动程序实现,最主要的工作也就是在设计驱动程序过程中,因为你的驱动程序不仅要满足硬件的功能还要不影响系统的性能。其次,一般驱动程序可以作为模块的形式加载到内核中,或者在配置内核时直接静态编译进内核。至于具体驱动程序的实现过程,我不能用简短的文字回答你。
by
王成城(游客) |
2008-5-3 17:14:00 | 个人主页 |
引用 |
返回 |
删除 |
回复Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
第12章(295页)那个configure可能有点问题,会编译不通过,在我vmware+redhat9下是这样。应该使用qt自带的freetype包,默认是系统那个。这样命令行应该是:./configure -embedded x86 -qvfb -qt-freetype,在arm下似乎不需要指定。我不知道大家都这样。
另外,12.2.1 frame buffer那个测试程序在哪里?光盘上没有。
以下为blog主人的回复:
由于疏忽没有将代码附到光盘上,你可以用下面的源代码自己编译:
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
#i nclude
int main()
{
int fbfd = 0;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
long int screensize = 0;
char *fbp = 0;
int x = 0, y = 0;
long int location = 0;
fbfd = open("/dev/fb0", o_rdwr);
if (fbfd == -1) {
perror("error: cannot open framebuffer device");
exit(1);
}
printf("the framebuffer device was opened successfully./n");
if (ioctl(fbfd, fbioget_fscreeninfo, &finfo) == -1) {
perror("error reading fixed information");
exit(2);
}
if (ioctl(fbfd, fbioget_vscreeninfo, &vinfo) == -1) {
perror("error reading variable information");
exit(3);
}
printf("%dx%d, %dbpp/n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel);
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
fbp = (char *)mmap(0, screensize, prot_read | prot_write, map_shared,
fbfd, 0);
if ((int)fbp == -1) {
perror("error: failed to map framebuffer device to memory");
exit(4);
}
printf("the framebuffer device was mapped to memory successfully./n");
x = 100; y = 100;
for (y = 100; y < 300; y++)
for (x = 100; x < 300; x++) {
location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) +
(y+vinfo.yoffset) * finfo.line_length;
if (vinfo.bits_per_pixel == 32) {
*(fbp + location) = 100;
*(fbp + location + 1) = 15+(x-100)/2;
*(fbp + location + 2) = 200-(y-100)/5;
*(fbp + location + 3) = 0;
} else {
int b = 10;
int g = (x-100)/6;
int r = 31-(y-100)/16;
unsigned short int t = r<<11 | g << 5 | b;
*((unsigned short int*)(fbp + location)) = t;
}
}
munmap(fbp, screensize);
close(fbfd);
return 0;
}
by 碧月(游客) | 2008-4-19 15:15:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
李老师:你好
我想问一下:
framebuffer是linux自己支持的吧,不需要做任何改动?
那我如何来测试我的fb是否正常呢?
我的dev下面只有一个fb的文件夹,里面什么东西都没有
这是正常的吗?
以下为blog主人的回复:
Linux内核中提供framebuffer机制,但是作为编写LCD驱动时,需要编写调用framebuffer提供API的驱动代码。关于如何测试framebuffer,请参考上面给出的测试程序。
by 影子(游客) | 2008-4-10 17:22:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
你好!我是你的一位读者,我最近开始学习linux下的软件开发,最近试验2.2.2节中,用Crosstool工具构建交叉工具链时,按照上面的答复应该要切换用户。
我在winxp系统中有两个用户,一个是管理员,一个是普通用户。可在SYGWIN中就是切换不了用户,提示密码输入,按下键盘的任意键就是没有响应。
按下回车键后提示如下“su: incorrect password,or insufficient privileges to change user(see http://cygwin.com/sygwin-ug-net/ntsec.html#ntsec-setuid):Permission denied”。请问为什么切换不了用户?期待您的回复,谢谢。
以下为blog主人的回复:
根据提示,是由于你的权限不够,建议你使用虚拟机安装Linux系统进行制作交叉编译器。
by zyj(游客) | 2008-3-31 0:47:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
求助:
在安装内核头文件时,按照书上敲入命令,发现include/linux内没有version.h,后来敲入:make进行编译,却出现错误:
CC arch/i386/kernel/asm-offsets.s
In file included from include/asm/thread_info.h:17,
from include/linux/thread_info.h:21,
from include/linux/spinlock.h:12,
from include/linux/capability.h:45,
from include/linux/sched.h:7,
from arch/i386/kernel/asm-offsets.c:7:
include/asm/processor.h:68: 错误:‘CONFIG_X86_L1_CACHE_SHIFT’ 未声明 (不在函数内)
include/asm/processor.h:68: 错误:要求的对齐边界不是常量
make[1]: *** [arch/i386/kernel/asm-offsets.s] 错误 1
make: *** [arch/i386/kernel/asm-offsets.s] 错误 2
然后我在FC4下做,出现同样的错误,我不知道怎么回事.我用的是红旗linux server4.0,和redhat9.0一样。
以下为blog主人的回复:
应该是内核配置问题,请检查配置内核选项是否正确。
by 求助(游客) | 2008-3-27 19:17:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
我刚刚开始做嵌入式系统的课题时间并不太久,您的这本教材给了我很大的其实和帮助,我在按照您书中提供的方法建立交叉工具编译链时,当进行到39页
#../ binutils-2.15/configure --target=$TARGET --prefix=$PREFIX
这一条命令时,屏幕显示
-bash: ../: is a directory
当我把../换成binutils-2.15的绝对路径执行后,屏幕出现了几条check信息,接着上出现CC:command not found
***the command 'cc -o confest -g confest.c' faild
***You must set the environment variable CC to a working compiler
接着执行# make和# make install命令,屏幕均显示为
make:***No target specified and no makefile found.Stop.
请教您我是在哪里出现了问题,该怎样才能解决啊?
以下为blog主人的回复:
怀疑是环境变量或配置制定的路径不正确引起。
by jesfei(游客) | 2008-3-10 17:17:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
您好:
我在用的MYBIOS时出现如下问题,请分析一下是什么原因:
在读nandflash的数据到ram时,读完3个PAGE后就在下面的for语句中做死循环:
for(i=0; i<512; i++)
buf[i] = RdNFDat();
NFChipDs();
}
这时AXD中显示的内存地址为:0x30200600.
make时没有出现问题.
串口打印如下:
************************************
* Welcome study ARM & Linux *
************************************
Read chip id = ec76
Nand flash status = c0
The LoadRun function is called!
cptoram =
cptoram =
cptoram =
" cptoram ="是我设置的打印,每读一page打印一次.
by jeef(游客) | 2008-3-9 22:45:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
你好,书中第41页,还有一个错误的地方:
“6.建立glibc库”的上面一段中“/home/mike/armlinux/tools/bin”应该为“/tools/bin”,不知道是不是因为我用的ubuntu7.10版本的原因,我在你提供的路径下面找不到,但在/tools/bin目录下找到了arm-linux-gcc等工具。
以下为blog主人的回复:
这个路径根据你编译时配置选项所定。
by ottor(游客) | 2008-3-2 13:17:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
请教一个问题:我在安装编译boot-trap gcc时,make后出现如下错误:make[2]: arm-linux-ar:命令未找到
make[2]: *** [libgcc.a] 错误 127
make[2]: Leaving directory `/home/jeef/armlinux/build-tools/build-gcc/gcc'
make[1]: *** [libgcc.a] 错误 2
make[1]: Leaving directory `/home/jeef/armlinux/build-tools/build-gcc/gcc'
make: *** [all-gcc] 错误 2
但是我在bin文件架下发现已经有这个命令。
以下为blog主人的回复:
应该是环境变量PATH路径指定不正确导致。
by jeef(游客) | 2008-2-21 22:48:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
我按书中做2.2.1与2.2.2都无法做出。
1、2.2.1中的6.建立glibc库时,在build-glibc下仅产生1个config.log文件其他什么也没有是什么回事?
2、2.2.2中的4.执行脚本时./arm.sh出错。也不知道怎么回是。
我用的是fedora8(linux2.6.23,你书中例子与linux版本有关?或与fedora中的软件包设置有关?能否给个回答。
建议你在改版时,能够在书前介绍一下你的系统设置,让读者能够将系统配置与你书中相同,否则很难得到正确的结果。
以下为blog主人的回复:
1.首先检查一下你的配置是否有问题,也就是执行configure时选项有没有正确,执行./configure后会产生makefile文件。
2.执行./arm.sh执行错误有可能是crosstool本身的一个bug,请参考我blog中该问题的解决方法。
一般情况下驱动程序是和内核版本有关系的,应用程序和内核版本的关系不大。
by pth(游客) | 2008-2-10 17:52:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
ARM嵌入式Linux系统开发从入门到精通是一本很好的书,在学习中碰到一些问题,希望很大家交流,共同学习
QQ:13363958 msn lufengjie@live.cn
by 小路(游客) | 2008-1-16 17:57:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
有问题想问一下
我是一名初学者,我第二张都看完了,可是里面都已经介绍了很多操作过程,比如交叉编译什么的。可我不知道在电脑怎么操作,也按你书上所说的步骤去下载了软件,但后面就不知道怎么做了,希望给予解释。谢谢
以下为blog主人的回复:
你好!我收到过许多读者的来信,他们根据我书上的步骤都成功做出来过交叉编译器,当然中间确实出现过一些问题,所以我建议你按书中所写的步骤做一遍,当你遇到问题时请发信告诉我,这样便于你做出自己的交叉编译器,你现在提出的问题太笼统,我没办法给你回答。
by 令君(游客) | 2007-12-17 16:19:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
你好,我是一个初学者,刚买了你的这本书当看到2.2.2章节是出现了问题想请教一下,当把环境变量添加后,前面按照书上做的一切正常,测试hello.c
时当输入执行#arm-linux-gcc -o hello hello.c 结果提示bash:arm-linux-gcc :command not found,不知道何故?看了一下在/opt/crosstool/gcc-3.6.3-glibc-2.3.2/arm-linux/bin目录下面有arm-linux-gcc这个文件啊?环境变量也是按照书上写的,怎么会不对呢?
以下为blog主人的回复:
应该是环境变量的PATH路径没有指定正确!
by hilter(游客) | 2007-12-10 1:39:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
以下引用xwf72(游客)在2007-12-5 20:20:00发表的评论:
undefined
未定义???什么undefined 按书上一步步做的,为何没有呢?要不两个文件都不存在。怎么只存在一个?
以下为blog主人的回复:
不好意思,这是本书出现的一个失误,你需要执行make编译之后才会产生version.h文件。
by zero(游客) | 2007-12-6 0:28:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
undefined
by xwf72(游客) | 2007-12-5 20:20:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
我在做到 40p 时 输入命令是:
#make ARCH=arm COSS_COMPLILE=arm-linux- menuconfig 后检查目录include/linux下是否有 version.h 和 autoconf.h时候,只能看到有 autoconf.h 而看不到version.h 不知道这个是为什么?
以下为blog主人的回复:
不好意思,这是本书出现的一个失误,你需要执行make编译之后才会产生version.h文件。
by xwf72(游客) | 2007-12-5 20:19:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
作者,您好!
我刚购买您的这本书,感觉真的不错,非常适合我。目前我也正好在做相关的项目。看到第二章,碰到了和上面一位朋友(清风)一样的问题。
我的做法和他一样,系统也提示不成功;另外,如果我不用mike做文件夹名,而用别的名字(比如David),当然也改了arm.sh文件中的相关地方(把/home/mike/downloads改为/home/David/downloads),运行./arm.sh时,系统提示找不到文件。
比较着急,自己一时无法解决,盼望您的指点和解答,谢谢!
我的E-mail:huaxin@wxzte.com,也请感兴趣的朋友帮忙和交流!
以下为blog主人的回复:
该问题你可以参考我对(清风)的回答,应该和你的问题是一个。再一个关于你提到的把文件名mike替换为David等,这个完全没有问题,书中以mike作为一个例子,文件名你可以任意取,但是保证你的脚本中指定的路径能找到你的编译工具文件就可以。
by DavidHua(游客) | 2007-11-21 11:53:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
我是一名初学者,觉得你的书写的非常适合我,很多概念都清楚了,非常感谢你.
现有个问题请教您:在学习第二章时,2.2.2节,我用您书中的方法做了,但不成功.提示说有的设置重复了,有的没设置,总之不能执行arm.sh脚本.
我是这样做的:将6个资源拷贝到downloads下,一个拷到mike下解压,然后将光盘提供的arm.sh,arm.dat,gcc-3.3.6-glibc-2.3.2.dat拷贝到mike/crosstool-0.42下,然后执行脚本arm.sh.不成功,希望您帮忙看下问题出在哪?期待您的答复.谢谢!!!
以下为blog主人的回复:
你好,很高兴看到你提出的这个问题,该问题我也发现了,我怀疑是crosstool工具本身的一个bug,不过可以通过这种方式来解决:首先假设你是以root方式登录的系统,你在执行./arm.sh脚本时,它会提示错误建议你不要用root权限执行这个脚本。这个时候你切换以用户权限登录,比如执行:su mike (切换到以mike用户登录),这个时候你再执行./arm.sh脚本,它又会提示错误说权限不够,所以不能执行。这个时候你再执行:su 切换到root登录,这个时候再执行./arm.sh就可以编译了。希望我回答的这个问题就是你所遇到的这个问题。
by 清风(游客) | 2007-11-15 23:52:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
一位读者请教问题
你好!我是你的一位读者,我最近开始学习linux下的软件开发,我的问题是:linux下很多软件包的makefile文件都是自动生成的,这样我们下载后执行#./configure
#make
#make install 就可以了,但是这种情况下编译器肯定是用的gcc,我现在要编译可以在uclinux下执行的代码,应该怎么办呢??
我看到你在书第2章介绍交叉编译工具的时候有这么一句话:
#./configure --target=arm-linux.............是不是加上这个选项生成的Makefile文件执行#make时就使用arm-linux-gcc了呢? 我仿照上面写了
#./configure --target=arm-elf 发现不能达到我的目标,请问问题出在哪?还有我发现你在编译内核时有这样一条指令
#make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig这是不是和上面的意思一样,告诉使用arm-linux-gcc编译器???
期待你的回复,谢谢!!
以下为blog主人的回复:
关于在普通PC机上编译uclinux程序,首选你需要安装关于uclinux的交叉编译器,假如你的目标板是ARM平台,那么你的交叉编译器的名字就应该为:arm-uclibc-gcc
安装好交叉编译器后,你在编译单个文件时,就把平时用的gcc命令替换为arm-uclibc-gcc就可以编译成uclinux可执行的程序。如果用make时,就可以用make CROSS_COMPILE=arm-uclibc- 选项替代make CROSS_COMPILE=arm-linux- 选项。
by zssmcu(游客) | 2007-11-14 13:39:00 | 个人主页 | 引用 | 返回 | 删除 | 回复
Re:《ARM嵌入式Linux系统开发从入门到精通》勘误
第二位读者的刊物信:
你好:
我是一名ARM linux的初学者,从你的书中收益很大,你的书逻辑性强,条理清晰,是一本不可多得的好书,真的