Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537756
  • 博文数量: 237
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:02
个人简介

目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发

文章分类

全部博文(237)

文章存档

2024年(18)

2023年(68)

2022年(13)

2021年(7)

2020年(11)

2019年(3)

2018年(10)

2017年(8)

2012年(7)

2011年(4)

2010年(32)

2009年(41)

2008年(6)

2007年(9)

分类: LINUX

2009-07-18 10:49:13

Boot Loader
 当CPU一上电,此时CPU必须从NOR Flash或者NAND Flash中取指令 , 直接从 NAND Flash取指令的AP为支持Nand 启动 。
 Nand boot ,其实原理就是AP 内部的ROM里有一小段代码,包括NAND Flash驱动,它启动从Nand Flash中读取一段(比如4KB)到内部的SRAM中,
             然后跳转到SRAM起始位置,执行SRAM中的代码。SRAM中的代码中包括初始化SDRAM,Nand Flash driver等,它的{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国{BANNED}中国第一件事情就是初始化SDRAM,
       然后把Nand Flash中的更多的东西(整个boot loader)搬到SDRAM中,然后执行uboot
 NOR boot : 代码就在NOR Flash中,直接执行,初始化CPU ,SDRAM 等, 把整个uboot 搬到SDRAM中 ,然后执行uboot,在uboot中把kernel从
             NAND Flash中读出。

 对于常用的cpu , u boot 都支持, 这块不需要改什么
对于u boot不支持的cpu , 需要写汇编,初始化cpu ,SDRAM ,NAND Flash驱动,NOR Flash驱动 (setenv命令需要)等

 在boot loader 中,还需要UART驱动,以支持打印信息。
 另外 要加上LCD 驱动 ,以支持splash ,否则在uboot阶段,没有任何显示。
 正常启动 uboot,以引导linux  这些就够了。

但是对于一个产品:
 它在研发阶段,uboot 必须支持TFTP , 需要网卡驱动 (在boot loader中)
    必须支持通过uboot下载,对于串口下载到内存,uboot本身支持,loadb,loady等命令 ,但因为速度慢 ,所以
   一般要uboot支持USB下载,可基于DFU的基础上改成bulk 传输 。
 同时对于生产ATE,把它放在uboot阶段对生产比较好,否则要等到整个系统起来,kernel+小测试文件系统也要10多妙 。
  这样的话,在ATE中需要加上  memory test ,LCD test, 声卡测试,需要加上I2C驱动,key test,RTC test,。

Kernel:  
 
 在kernel中 , 不需要对SDRAM初始化了。 但必须对内存进行分配,也就是物理起始地址是多少? 共有多少内存,
                                    虚拟地址空间的分配,  IO 地址空间 ,平台初始化。。。。
      linux 系统需要click , 需要用到AP的timer ,
             对UART初始化,以打印信息
      对网卡初始化,以支持NFS调试
   必须要有NOR ,NAND驱动 ,以支持文件系统
  必须要有LCD 驱动 ,以支持显示 , Framebuffer
 必须支持key ,以支持输入
 必须 支持 I2C ,SPI 接口 ,以支持在上面的设备 , I2C 时钟, touchpad 这些设备需要驱动 , MMC over SPI
 SD card
 USB device , 需要设备驱动  , 以支持u盘
 USB host , 需要host 驱动
 自带WIFI吗? wifi驱动
 ALSA 驱动以支持 声卡 (I2S)
 GPIO 本身的驱动
watchdog ?

 有DSP吗 ? DSP驱动
 RTC 自带的吗? 不自带的话,外接一个RTC(是否{加}{钮}{kou}池还是用大电容来保持时间?)
 power managerment
 DMA ? 这个主要在其他驱动中,启动它来传输数据
 

 移植文件系统 Yaffs ,以提高性能。
 还有就是对内核配置,比如EABI ,性能方面,开机进度显示psplash .

 我们发现 对于成熟平台,很多驱动都有了,驱动人员只需要改改LCD,添加一些外设。
 

阅读(1145) | 评论(0) | 转发(0) |
0

上一篇:How to write nand driver

下一篇:MTK编译

给主人留下些什么吧!~~