mini2440 linux-3.7移植记录(三)

来源:互联网 发布:windows禁止arp 编辑:程序博客网 时间:2024/05/29 19:54

重新把友善之臂的教程看了看,发现自己少做了一个步骤啊。好吧,我坑了~~

应该在mach-mini2440.c那还要修改文件中的MACHINE_START中的信息的。即改为

MACHINE_START(MINI2440,"mini2440")

简单的推测为定义目标板启动的机器代号,以及描述。所以mini2440可以改为其他的

例如可改为MACHINE_START(MINI2440,"development board from FriendlyARM")

修改保存后在编译一次

alex @arch~/embedded/linux-3.7 $ make zImage

再次烧入开发板中测试。再次的发现,在串口接受到的信息依然是

NOW,Booting Linux......

UncompressingLinux... done, booting the kernel.

好的,问题还是存在,但是到这里了,由于之前一直操作的步骤都是按照友善之臂提供移植指南来操作的,所以基本是排除移植的问题了(其实还是可能有其他的问题的,这里就先这样吧)。

好的,那么可以怎样来解决这个问题呢。

现在是强大的google大显神威的时候,多次搜索后,看到网上的基本总结出来的一般有:

a.机器码传输错误

b.串口未启动

c.启动命令错误

逐一检查,

a.机器码从2.6的某个版本起(这不是买萌啊,确实是不知道是那个版本),已经是能正确的确认为MINI24401999的了。3.0以后的更不用说了,而且我们采用的友善之臂配套的supervivi,所以在机器码的传输是应该没问题的了。

b.串口的初始化是在我们复制过来的mach-mini2440.c中有点了,具体的代码,可以自行查阅文件。

而且在内核的设置中可以看到针对s3c24XX系列的串口已经是添加而且启动的了。

c.现在基本是只有c的原因的了。

那么我们可以查看supervivi传递个内核的启动参数的。

连接串口,调至nor启动,选择s进入启动参数设定菜单。选择v查看当前参数设定。默认的话,显示的应该是:


可以看到参数中有设置串口输出的参数console=ttySAC0.

但是这样是不能让内核启动的信息同时输出到tty0,(一般是显示屏),ttySAC0(串口).

要想从串口看到内核启动时信息,是要添加参数的。

应该在console=ttySAC0前添加console=tty0而且一般设定串口是都是有设置串口模式的。

所以可以把整个输入参数设为noinitrdroot=/dev/mtdblock3 init=/linuxrc console=tty0console=ttySAC0,115200n8

好的设置保存好,重启开发板。

但是悲剧再次发生,串口还是毫无反应,依然的

NOW,Booting Linux......

UncompressingLinux... done, booting the kernel.

真是让人心碎啊。

好的,现在真的不知到怎么办了。

停下来思索吧~~

现在是串口没有接受到相关的启动信息,但是不排除是不是其实是内核是有正常的启动了,只是没有输出显示。所以我们可以先移植显示驱动。

移植显示驱动一般可以按照友善之臂提供指南来操作的了,因为指南上说得很清楚,相关的过程文字我就不抄过来了。

怎样可以快捷地做好一直显示驱动?本人是直接找到友善之臂提供内核源码,在其中的mach-mini2440.c中复制相关的驱动代码。

再同样的在/driver/video/Kconfig文件中完成同样的操作。

当然啦,因为是移植已有可编译成功内核源码的开发板的显示屏驱动,所以可以直接从现成的代码中提取出来使用,要是自己开发新的产品的话,还是要自己一步步的计算,填写参数的,完成函数的。

这里就简化处理吧。

最后在makemenuconfig中添加显示驱动到编译中,开始编译

makezImage

下载烧写,重启开发板,可以看到有液晶屏上有文字出现,由于没有添加液晶屏的背光灯驱动,所以是没有背光,看的辛苦啊。上面显示的文字打进去在google上搜索,看到有大神说是分区,文件系统的加载没成功,因为我们还没有开始移植文件系统支持和烧写根文件,所以这已经说明了我们到此为止的移植还是成功的。


好的,我们到此为止是成功的了,但是不能从串口看到启动的信息,只是在小小的液晶屏上看到最后的一屏的信息是不能满足我们的。现在就是要解决串口的问题的了。


现在,本人是终于把串口输出的问题给解决了,过程因为是经历了很久,很让人痛苦,故不写出来了。

方法且到下一篇吧。哈哈哈:-


又偷懒了好多天了。生活甚是堕落啊。
好了,原文再续,书接上一回。上次讲到虽然我们可以把不完善的内核启动起来了,但是还是不能从串口看到启动信息,所以还是要继续调试解决问题啊。
其实,解决的方法很是简单,就是在编译内核时添加内核启动参数。步骤如下:
alex @arch~ $ cd embedded/
alex @arch~/embedded $ cd linux-3.7/
alex @arch~/embedded/linux-3.7 $ make nconfig
这样就打开了内核配置的界面,当然大家可以旧的makemuneconfig 或是图形界面的makexconfig来进行配置修改的,不影响操作,不过,这个makenconfig的界面还是挺漂亮的了。
依次进入Bootoptions
()Defaultkernel command string
输入内核启动命令,这个先是按照友善之臂提供的mini2440的使用的默认参数来设置吧:
noinitrdroot=/dev/mtdblock3 init=/linuxrc console=tty0console=ttySAC0,115200n8
修改好之后,按F6保存,退出设置。
重新编译下载测试。
这时可以在gtkterm中看到输出的启动信息了。
好啦,这个问题终于解决了,分析一下原因,大概是supervivi不能正确的把内核启动命令传到内核,至于具体可以怎样修改好,那就不知道了,等相关大神分析supervivi和内核的代码才知道了。

原创粉丝点击