《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) | 编辑

  • 上一篇:真情赠送《ARM嵌入式Linux系统开发从入门到精通》
  • 下一篇:HP大中华区总裁孙振耀退休感言(上)[转贴]

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 <stdlib.h>
#i nclude <unistd.h> #i nclude <stdio.h> #i nclude <fcntl.h> #i nclude <linux/fb.h> #i nclude <sys/mman.h> #i nclude <sys/ioctl.h>

 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;

     // open the file for reading and writing
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");

     // get fixed screen information     if (ioctl(fbfd, fbioget_fscreeninfo, &finfo) == -1) {         perror("error reading fixed information");         exit(2);
}

     // get variable screen information     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);

     // figure out the size of the screen in bytes     screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;

     // map the device to memory     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;       // where we are going to put the pixel

     // figure out where in memory to put the pixel     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;        // some blue                 *(fbp + location + 1) = 15+(x-100)/2;     // a little green
*(fbp + location + 2) = 200-(y-100)/5;    // a lot of red                 *(fbp + location + 3) = 0;      // no transparency             } else  { //assume 16bpp
int b = 10;                 int g = (x-100)/6;     // a little green                 int r = 31-(y-100)/16;    // a lot of red                 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的初学者,从你的书中收益很大,你的书逻辑性强,条理清晰,是一本不可多得的好书,真的很感谢你写了这样一本好书。
你的书P103页的最下一行:“BusyBox是很多标准Linux工具的单个可执行实现。”时是否应该为:“BusyBox是很多标准Linux工具的单个可执行实现工具”。另外介绍busybox这个工具时,用下面的比喻不错:“busybox是一个集成了100多个最常用linux命令和工具的软件,平时用的linux命令好比分立的电子元件,而busybox好比一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而容量却小了许多倍,非常有利于嵌入式系统设计。”这样让初学者更容易看明白。
书P105页的第七行:“文件的符合连接,”应为“符号连接”。
总之,你的书不错,谢谢你,期待你的新书。

湖南科技大学物理学院电子系
姓罗的学生

《ARM嵌入式Linux系统开发从入门到精通》勘误相关推荐

  1. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  2. 大话设计模式之简单工厂模式

    一.简单工厂模式 1.起因 最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界.首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示. 2. ...

  3. java 之 解释器模式(大话设计模式)

    在软件的世界里存在着翻译机,只不过在软件中我们称之为解释器.在系统中如果某一特定类型的问题在频繁的发生,此时我们就有必要将这些问题的实例表述为一个语言中句子, 因此可以构建一个解释器,然后利用该解释器 ...

  4. 享元模式 -- 大话设计模式

    在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<大话设计模式>来祭奠那逝去的-- 享元模式:运用共享技术有效地支持大量细粒度的对 ...

  5. 【Python】《大话设计模式》Python版代码实现

    <大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...

  6. lt;二gt;读lt;lt;大话设计模式gt;gt;之策略模式

    又和大家见面了.可以坚持写出第二篇文章真不错,好好加油. <<大话设计模式>>解说策略模式是以商场收银软件程序开头的,那么问题来了.哪家商场收银软件强,开玩笑了. 读过上篇文章 ...

  7. 读《大话设计模式》有感

           昨天拿到了<大话设计模式>一书,竟然一口气读到第15章,这在我看过的书中还是没有的.这本书出来也有半年多了,之所以现在才买来读,这其中也是有原因的.          早在这 ...

  8. 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(四)

    <大话设计模式>将于11月底由清华大学出版社出版 <大话设计模式>第29章-OOTV杯超级模式大赛-模式总结(一) <大话设计模式>第29章-OOTV杯超级模式大赛 ...

  9. 大话设计模式Python实现-简单工厂模式

    简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用简单工厂模式实现一个简单的四则运算 1 #!/us ...

  10. 大话设计模式C++版——装饰模式

           女人常说男人喜新厌旧.仅仅见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,很适合去古代当老公(现代是不行的.由于仅仅能娶一个老婆了).装饰模 ...

最新文章

  1. logstic 回归文章链接
  2. S4 exercise -- 模块
  3. linux 搜索 空格,如何在Linux中搜索带有空格的模式的文件
  4. Windows环境配置Apache+Mysql+PHP
  5. set列表对象去重_java中List对象列表去重或取出以及排序
  6. Km Kcat Kcat/Km
  7. springbootTest为什么整合dubbo后无法使用
  8. 【精简】海姆利克急救法+心肺复苏 基础急救技能
  9. 生活随记-公平和本分
  10. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】
  11. 知识点滴 - 多重验证MFA
  12. 服务器无法远程访问的原因有哪些
  13. 递推算法:繁殖问题(昆虫)
  14. 93450C光驱刷机
  15. L351无线打印服务器,TP-LINK双频无线路由器打印服务器客户端软件
  16. 切蛋糕 爱丽丝梦游仙境,来到了疯帽子的茶会。茶会上有n只兔子,疯帽子作为绅士,今天专门为爱丽丝和兔子们准备了一个圆形的慕斯蛋糕,疯帽子要把这块蛋糕平均分给爱丽丝和兔子们(疯帽子自己不吃蛋糕)
  17. ansible剧本(playbook)
  18. [转载]各种材料摩擦系数表
  19. Chrome 扩展:又一个老板键 PanicButton
  20. 反序列化 对象 java_Java IO详解(六)------序列化与反序列化(对象流)

热门文章

  1. 【深扒】深入理解 JavaScript 中的异步编程
  2. 如何在虚拟机安装windows server 2003
  3. 局域网限速软件_网络发包软件-割包合同适用于任何游戏?
  4. 常用adb 命令整理
  5. 光敏传感器介绍及其软件应用
  6. 瓜瓜播放器android,瓜瓜视频播放器
  7. SwitchHosts的安装及软件使用
  8. 浅谈SQL注入攻击与防御(适用于小白观看)
  9. MySQL安装包下载地址(含所有版本)
  10. java 发送邮件(亲测有效)