hulifox008 发表于 2013-5-9 11:16:23

linux kernel 配置

试图编译 https://github.com/linux-sunxi/linux-sunxi 上的sunxi-3.4 branch. 编译过程没有问题,但是当将编译的kernel放到CB上时不能正常启动。目前我所使用的方式是在TF卡上装上u-boot. 这样CB会boot到TF卡上的u-boot。然后使用loady命令,通过ymodem协议将kernel传输到CB的内存中,在用bootm命令启动内核。貌似u-boot还不支持tftpboot,使用串口传实在是慢阿。

经过一些调试,才发现,这个kernel运行时会从内存的0x43000000处获得一些硬件的配置参数。我想这些参数都是CB的bootloader写入的(那些fex文件)。如果从TF卡启动u-boot,该内存并没有初始化,造成kernel运行失败。我尝试了下,修改了下kernel串口的驱动,不去从那个地方获得硬件参数,而是暂时硬编码,果然就可以启动了,但是遇到其他需要从该区域获得参数的地方,还是会失败。

现在的问题是,CB使用目前这种方式,是有什么特别的原因吗?貌似与一些“主流”的方法不太一样。现在有没有哪个kernel source是用的platform data方式来配置硬件数据的呢。实在是不喜欢fex那套东西。比较倾向与 上电 -> u-boot -> kernel这样的流程,而且kernel也不需要依赖于内存某个地方的配置数据。我打算在sunxi-3.4的基础上,改用platform data的方式配置硬件,去掉需要从内存中获得硬件参数的调用。不知道有没有有哪个kernel已经是这样了。

PS:我是用这个方法编译的u-boot
http://linux-sunxi.org/How_to_boot_the_A10_over_the_network
可是并不像文中所说的那样支持tftpboot,我看了下u-boot的源码,好像没有CB的网络支持,是不是我哪里弄错了?

hulifox008 发表于 2013-5-9 12:28:09

原来是u-boot的branch搞错了,使用sunxi-current这个branch就可以了:lol

matson 发表于 2013-5-10 18:12:52

曾经platform data是被认为标准的方式,但目前上游又开始推崇device tree的方式。楼主有兴趣,我觉得device tree更有搞头~
页: [1]
查看完整版本: linux kernel 配置