#make distclean 重度的清除,相当于 make和make gec210_nand_config的反向操作
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Uboot 移植
一、什么是移植? 将别人发布的源码(针对一个特定的平台)做修改,然后让这段代码可以在我们自己的平台上运行(GEC210) 移植的目标:GEC210(S5PV210) 移植的源码:必须支持该CPU(S5PV210) 移植的源码的来源: 1、CPU的官方网站/代理商 2、uboot官网(支持移植的CPU) ========================================================================================================= 二、将uboot移植到GEC210. android_uboot_smdkv210.tar.bz2 ----> GEC210平台上 SMDKV210 ---->samsung GEC210 ---->yueqian 不能这样做: SMDK2440(S3C2440) --->GEC210 ======================================================================================================== 三、编译SMDKV210提供的uboot源码 1、安装交叉工具链 #tar -jxvf android_uboot_smdkv210.tar.bz2 通过顶层的Makefile文件设置交叉工具链。 ifeq ($(ARCH),arm) CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi- 2、针对特定平台(SMDKV210)做uboot源码的配置 在Makefile中的配置入口: smdkv210single_config : unconfig @$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110 @echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/smdkc110/config.mk 通过配置入口可以得到几个信息: $(@:_config=) --->smdkv210single arm ---> cpu架构 s5pc11x ---> cpu的型号, s5pc11x是s5pv210的早期版本,在做s5pv210uboot源码时,使用了s5pc11x smdkc110 --->board的名字。smdkc110相当于smdkv210的早期版本 samsung --->vendor 厂家的名字 s5pc110 --->soc 片上系统 #make smdkv210single_config Configuring for smdkv210single board... 3、编译 ----uboot.bin不能直接在GEC210上运行(因为没有做移植) 在SMDKV210平台上运行 #make ======================================================================================================== 四、uboot的源码结构分析 注意: 问题:uboot只是很多cpu架构、cpu的型号、板子平台;如何配置源码,使该源码支持一个具体的平台???????? 答: @$(MKCONFIG) $(@:_config=) arm s5pc11x smdkc110 samsung s5pc110 类似与CPU传参,参数的名字($(@:_config=) arm s5pc11x smdkc110 samsung s5pc110)和源码目录文件的名字保持一致 1、lib_* 支持不同的CPU架构,与GEC210相关的是:lib_arm,针对arm架构的cpu公共的代码 2、cpu uboot支持的cpu,与GEC210相关的是:cpu/s5pc11x/ 在该目录下有一个源文件start.S,该源文件是针对210平台的地址要执行的源文件(入口) cpu/s5pc11x/s5pc110/ 3、 /board/samsung/smdkc110/ 板级初始化代码 4、include 头文件,与GEC210相关的文件:include/s5pc110.h include/asm-arm include/configs/smdkv210single.h 5、common uboot的命令,公共的代码 6、api uboot上设计应用程序的接口,公共的源码 7、doc 帮助说明文档 8、fs 文件系统的源码,公共的。 9、net uboot的一些网络工具(ping tftp..)的源码 10、tools uboot提供的一些工具,如:mkimage,公共的代码 ======================================================================================================== 五、uboot移植过程 分析SMDKV210与GEC210两块电子板的差异(分析原理图),针对差异做修改,完成移植 1、修改串口的控制台:将串口3改为串口1 SMDKV210: uart2 GEC210:uart0 serial3 ----> serial1 uart2 --->uart0 -------------------------------------------------------------- 2、修改内存的配置 SMDKV210 :ch0:512MB 8bits * 4 ch1:512MB 8bits * 4 GEC210: ch0:256MB 16bits*2 ch1:256MB 16bits*2 提示: 1)GEC210平台内存的初始化是在uboot阶段完成的。内核阶段已经在内存中工作。内存的初始化非常关键 2)cotex-A8平台硬件设计是,最难的是内存的设计,尤其是在PCB阶段。why?? CPU与内存之间是一个高速电子线路 :时钟:200MHz 数据:800MHz 所以要注意电磁兼容性设计。 注意的问题:数据线要等长 -------------------------------------------------------------- 3、网卡(通过比较两块板子原理图) SMDKV210 --->DM9000 CE:CSn4/CSn5 CMD:ADDR0 GEC210 --->DM9000 CE:CSn1 CMD:ADDR2 1)确定基地址 s5pv210访问DM9000的基地址(由片选信号CSn1) 修改: #define CONFIG_DM9000_BASE 0x88000000 2)确定地址的偏移量 s5pv210访问DM9000的地址偏移量(由地址线addr2) CMD: addr2=1 DATA port addr2=0 ADDRESS port 0b000 .... 0100 ---> 4 注意DM9000是工作在16bits模式,210访问dm9000的地址 4<<1 = 8 3)初始化srom1控制器 static void dm9000_pre_init(void) { unsigned int tmp; /* DM9000 on SROM BANK1, 16 bit */ SROM_BW_REG &= ~(0xf << 4); SROM_BW_REG |= (0x1 << 4); //SROM1控制DM9000的时序 SROM_BC1_REG = ((0<<28)|(0<<24)|(5<<16)|(0<<12)|(0<<8)|(0<<4)|(0<<0)); //GPIO初始化 /* Set MP01_1 as SROM_CSn[1] */ tmp = MP01CON_REG; tmp &=~(0xf<<4); tmp |=(2<<4); MP01CON_REG = tmp; } -------------------------------------------------------------- 4、nor flash SMDKV210 ---> AM29LV800BB GEC210 --->无 将nor flash初始化的代码屏蔽掉 -------------------------------------------------------------- 5、SRAM SDMKV210 --->K6F1616U6A GEC210 --->无 将sram初始化的代码屏蔽掉 -------------------------------------------------------------- 6、PMIC---电源管理芯片 提示:什么是开关电源,什么线性电源??LM7805 --->线性电源 LM2576 --->开关电源 SMDKV210 --->max8698 GEC210 --->无 将将PMIC初始化这段代码屏蔽掉。 提示: 一般uboot只要能将初始化成功硬件的核心,能启动操作系统就OK了,与启动过程相关的功能模块可以不做移植(例如:usb、声卡、ADC、jpeg、MP4......)
