移植系统,入门问题,大家指教。谢谢
来源: 互联网 发布时间:2016-04-27
本文导语: 请问移植一个linux系统都要怎么做? 如何知道拿到的kernel和自己板子上的有什么区别?要改哪些地方?有没有什么办法可以很明了的得到这些不同的地方? | 既然是做移植,首先得知道硬件做了哪...
请问移植一个linux系统都要怎么做?
如何知道拿到的kernel和自己板子上的有什么区别?要改哪些地方?有没有什么办法可以很明了的得到这些不同的地方?
如何知道拿到的kernel和自己板子上的有什么区别?要改哪些地方?有没有什么办法可以很明了的得到这些不同的地方?
|
既然是做移植,首先得知道硬件做了哪些改动,这个是必须在对内核下手前就知道的。
通常情况是这样的,芯片提供商会提供chip的开发板参考设计,硬件工程师对根据公司要求/客户需求
对硬件设计进行某些修改(可以理解为“硬件移植”),如果按照常规的做法,硬件测试组在板子出来
之后会对写代码进行测试,这时通常是不带操作系统的。 同时,软件组需要获得硬件改动,以便做软件
的相应修改。
因此,说到移植,其实对芯片提供商和应用开发商 是有些不同的。
1) 对于芯片提供商,出来一个新的芯片之后,要做的工作会多些。因为芯片本身内部的模块的驱动是需要
重新开发(新模块) 或者 复用原来的(因为芯片的某些模块本身就是复用老版本芯片的),这些都可算作
移植范围之内的。
2)对于应用开发商,通常修改的是外围电路,所以一般是不需要修改chip内部模块的驱动的。(如果芯片
提供商提供的BSP里的kernel版本不是应用开发商所需的,那么应用开发商可能自己需要把所有的驱动更新
到新的内核版本,当然也可以要求芯片提供商做这种升级,假如够底气的话)。
可以看看这里http://www.arm.linux.org.uk/developer/machines/
你会发现 这里是以 板子 为单元来注册的,因为不同的板子可能用的是同一块cpu,只是外围电路有不同。
我猜测你的情况属于第二种。那样会简单了很多,尽可能复用原有的模块。
最初调试时不需要所有的模块都起来,先把必需的模块先弄好来调试,如串口,SRAM/DDR,Clock,GPIO等。
这里有个example,针对于PXA系列的。
http://groups.google.com/group/linux.kernel/browse_thread/thread/9aae2d7adf3662a5/ac4389da3f59afea?lnk=gst&q=PalmTX+initial+support+#ac4389da3f59afea
记住:调试板子,bootup为大。 一旦板子起来了(比如串口有信息了),其他的一切都可以很快搞起来,甚至
可以不同的人在不同的板子上调试不同的模块。
|
正解!
bootloader是前提!
|
您应该提供更具体的信息以得到更详细的回答。
1) 您的板子是不是已经有了 bootloader?
2) 您拿来的内核是标准内核还是某个定制化内核?
从标准化内核到运行在某个具体平台,有3步:
1) CPU 级开发, 很难, 通常已经有人做了。
2) 平台级,较难, 通常供应商已经做了。
3) 板级,简单。通常这是我们做的事情。
对于步骤3,首先对比您的板子和您拿来的内核能够运行的板子(称为参考实现)在原理图上的区别。比如, serial, storage , lcd, mem 等。 针对这些区别一一修改相关内容。
1) 您的板子是不是已经有了 bootloader?
2) 您拿来的内核是标准内核还是某个定制化内核?
从标准化内核到运行在某个具体平台,有3步:
1) CPU 级开发, 很难, 通常已经有人做了。
2) 平台级,较难, 通常供应商已经做了。
3) 板级,简单。通常这是我们做的事情。
对于步骤3,首先对比您的板子和您拿来的内核能够运行的板子(称为参考实现)在原理图上的区别。比如, serial, storage , lcd, mem 等。 针对这些区别一一修改相关内容。