arm linux板级移植
来源:互联网 发布:用手机淘宝代卖怎么做 编辑:程序博客网 时间:2024/06/06 01:48
linux标准内核已经支持很多芯片,包括常见的s3c**系列,这些芯片的移植比较而言,还是很容易的,只需要修改少量地方就可以。
今天我想讨论的是linux内核完全不支持的芯片板级移植方法。
bootloader部分暂不讨论,假定已经没有问题。只说内核部分。
首先,bootloader启动后会给内核传递一系列参数,如command string等,这启动有个比较重要的参数是系统的架构号,也就是内核中的machine type。这个变量一定要与内核中定义的架构保持一致,否则会导致内核无法引导。查看bootloader输出的machine type方法是,进入u-boot,输入bdinfo命令,可以显示机器号。然后对照arch/arm/tools/machine_type中定义的j机器号。
除了机器号,bootloader还会传给内核串口输出参数。如果内核引导时,串口没有输出,这也是一个需要注意的地方。如果使用的是u-boot的话,可以用#printenv来查看传递的参数。
接下来就是内核本身的设置内容了。
1。内核要启动首先就要有时钟。所以首先就得把时钟初始化。这个工作一般是在初始化定时器的时候做的,因为系统时钟使用的是定时器中的一个。具体是哪个,要看芯片手册。
2。串口是内核此时跟外界沟通的重要渠道,所以这时候首先就要把串口的初始化工作做好。
3。除了以上2件事外,我们要做的还有memory map的内存映射问题。它实现的是给外设分配一段内存空间,作为地址映射用。方法是填充每个外设的map_desc结构体,主要是其基地址和分配的地址空间大小。
4。接下来我们要实现中断号的分配,及中断处理函数的设置。
以上工作的实现都是在一个描述芯片的宏里定义的。MACHINE_START开始,MACHINE_END结束。
MACHINE_START(xx, "xx").phys_io = XX_UART_BASE & 0xfff00000,.io_pg_offst = (IO_ADDRESS(XX_UART_BASE) >> 18) & 0xfffc,.boot_params = PHYS_OFFSET+0x100,.map_io = xx_board_map_io,.init_irq = xx_init_irq,.init_machine = xx_board_init,.timer = &xx_timer,MACHINE_END
好了,完成以上工作之后,芯片的板级移植就算完成了一个框架,要想内核完全跑起来,还要添加其它驱动,比如flash, watchdog等。
- arm linux板级移植
- 移植SQLite3到ARM Linux开发板
- 移植Openssh到ARM Linux目标板
- ARM-linux移植
- ARM-Linux移植攻略
- ssh移植(arm-linux)
- ARM-Linux移植攻略
- arm linux内核移植
- arm-linux移植openssl
- arm linux移植lcd
- 【ARM】Linux驱动移植
- iotop 移植linux/arm
- ARM+LINUX移植攻略(二) U-boot-2009.08移植TE2440II开发板--移植步骤
- arm linux-2.6.24.3 移植
- Linux 系统移植arm s3c2410
- libjpeg的ARM linux移植
- ARM的Linux移植过程
- ARM linux 移植实验记录
- 轻松开启android 2.2 官方的app2sd
- 方法参数:值参数、引用参数、输出参数 -- ref out
- GridView中全选复选框
- C#和C++的主要区别
- JAVA-用HttpClient来模拟浏览器GET,POST (1)
- arm linux板级移植
- JAVA 获取http返回XML的数据
- 无法启动world wide web publishing service服务 错误:127 找不到指定的程序 解决办法
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(基础实例)
- 求解隐函数的全部解、非线性方程(组)的全部解
- Android 源码编译 文件系统制作
- fstream的使用方法介绍
- 2道关于委托事件的使用的例子
- 利用fstream 读写二进制文件