注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

嵌入式开发实战4——内核的编译之二初步修改后的编译  

2012-05-30 21:50:35|  分类: ARM开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

嵌入式开发实战4——内核的编译之二初步修改后的编译

上面只是使用默认的SMDK2440的默认的配置文件进行了一下配置编译,也可以说是先练练手,下来开始正式干活,首先,要按照自己的方式来生成MINI2440的目标平台文件,因为MINI2440在LINUX2.6 后就有了支持,所以第一件事是把原有的目标平台文件删除。

因为bootloader是靠传入的机器码来确认启动哪种目标平台的,记得以前都得自己来写,而MINI2440因为得到了支持,所以在linux-2.6.32.2/arch/arm/tools/mach_types 文件中,可以看到其的机器码为:1999。这就方便多了。

如果内核的机器码和 bootloader 传入的不匹配,就会经常出现下面的错误:
        Uncompressing Linux..................................................................................................... done, booting
        the kernel.
       运行到这不就停住了。

将linux-2.6.32.2/arch/arm/mach-s3c2440 目录下原有的mach-mini2440.c文件删除,将此目录下的

mach-smdk2440.c拷贝并修改成mach-mini2440.c,打开这个文件找到并修改:

MACHINE_START(S3C2440, "SMDK2440") ,修改为

MACHINE_START(MINI2440, "fjf  mini2440 ARMboard")。

 

继续在此文件中第160行,找到static void __init smdk2440_map_io(void)中的16934400(代表SMDK2440的晶振是16.9344MHZ)修改为12000000.然后注释掉:mini2440_machine_init(void)函数中的smdk_machine_init() 函数调用。

用VIM打开当前mach-mini2440.c,输入:

%s/smdk2440/mini2440/g

他的意思是:在整个文件(g的意思)中,查找任意(%s)的smdk2440的字符串并替换成mini2440,更具体详细的说明看VIM替换查找命令,多说一句,这种替换方法是不完全准确的,会把整个单词中一部分的也进行替换。

这里不知道什么原因将MACHINE_END中的最后一个字母给删除了,结果造成第一次编译时内核报个错,不知道MACHINE_EN是啥东东,不过给得路径和错误都相当明白,直接查找过去,真想不起来啥时候儿动过他。只记得用VI打开过一次,没干啥,直接保存了。所以说干活还是得认真小心,这是比较明显的,要是隐藏的BUG可就真傻了。

接着仍然是老办法:

Make mini2440_defconfig

Make zImage

时间好长,大约二十来分钟吧。就可以在arch/arm/boot目录下发现zImage的镜像文件。这个就可以下到开发板中,进行实验了。当然,由于很多驱动及一些相关的配置没有进行,所以只能启动内核,完成不了真正的功能。

每天前进一点点。

  评论这张
 
阅读(501)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017