- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux移植总结
Linux移植总结
—TQ2440
自己的交叉编译器
/sgpp/lite/arm/portal/subscription?@template=lite
下载arm-none-linux-gnueabi 编译器
1、编译程序或内核时所需要使用的该交叉编译器的库( lib ) 的路径是: arm-none-linuxgnueabi/
libc/armv4t/lib/目录下的,制作文件系统时也需要使用该目录下的库;
2、编译程序或内核时需要使用的头文件在arm-none-linux-gnueabi/libc/usr/include/目录下的。
然后添加编译Qt 所必需的库:jpegser.v6b.tar.gz、libpng、libz 和libuuid(e2fprogs),在移植好这些库
之后,需要将其拷贝到前面提到的目录中(包括lib 和include)。
在编译器下的“bin/”建立若干个可执行脚本分别命名为:arm-linux-xxx(这个xxx 就是在同目录下的:
arm-none-linux-gnueabi-xxx 中xxx),然后在脚本文件中添加内容如下:
#!/bin/sh
arm-none-linux-gnueabi-xxx -march=armv4t $*
注意:实际上只需要对gcc、gcc-4.3.3 和g++这三个制作可执行脚本,而针对其他的使用命令:#ln -s armnone-
linux-gnueabi-xxx arm-linux-xxx 做成链接指向对应的编译器即可。Linux- 和Linux- 的文件结构上的区别:主要是头文件改变了地方,在Linux-
中和S3C2440 相关的头文件放在“include/asm-arm/arch-s3c2410/”目录下的,而在Linux-
中则放在了“arch/arm/mach-s3c2410/include/”、“arch/arm/plat-s3c/include”和“arch/arm/plat-s3c24xx/include”
下的,当您编写自己的驱动或者从早期版本的内核移植驱动到最新版本的内核时请注意头文件的调用。
修改Linux内核
在系统中添加对ARM的支持
进到内核源码,修改“Makefile”文件,在大概193 行“ARCH ?=(SUBARCH)”和194 行
“CROSS_COMPILE ?=”,将其修改为“ARCH =arm”和“CROSS_COMPILE =arm-linux-”,然后保存。
也可以在第一次使用“make menuconfig”命令时添加如下参数后代替前面这个步骤的:“make
ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
修改平台输入时钟
修改平台的时钟频率,以满足TQ2440 或SKY2440 的工作频率。修改内核源码“arch/arm/machs3c2440/
mach-smdk2440.c” 文件的大概162 行或163 行,把16.9344MHz 改为12MHz,因为TQ2440 和
SKY2440 使用的就是12MHz 的外部时钟源输入,即改rch/arm/configs/)
(多多配置,总结经验,当然要结合每个文件架下的config文件与Makefile文件,学习效率会好很多。)
修改机器码
在TQ2440 或SKY2440 使用的uboot 中设定了机器码为168,所以内核这里需要修改机器码,否则会
出现不能启动的情况。机器码保存在内核源码的“arch/arm/tools/mach-types”文件中,在大概379 行,把
原来的362 改为168 保存即可。
为什么要改379 这行呢? 因为: 在内核的“ arch/arm/mach-s3c2440/mach-smdk2440.c ” 文件
MACHINE_START(S3C2440, SMDK2440)这行中的S3C2440,这个就是关键字了,然后回头看看machtypes
里面的379 行的内容,这里的S3C2440 就是机器码所在的位置了。
镜像编译
然后输入:#make zImage,就可以进行编译了,编译完毕后,会在内核源码的“arch/arm/boot/”目录
把镜像存放到指定位置
为了方便,我在这里还修改了内核源码的“arch/arm/boot/”目录下面“Makefile”文件,在58 行添加
了如下内容(红色部分所示),实现了把生成的zImage 文件复制到内核源码根目录下面,即linux-
目录下:
$(obj)/zImage:$(obj)/compressed/vmlinux FORCE
$(call if_changed,objcopy)
@
文档评论(0)