移植U-Boot2009-01到阳初S3C2440超值版 点击:897 | 回复:1



xilinxue

    
  • 精华:13帖
  • 求助:0帖
  • 帖子:367帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2010-02-15 19:45:11
楼主
移植U-Boot2009-01到阳初S3C2440超值版支持NAND启动,支持YAFFS文件系统

参考了《移植U-Boot-2008.10到友善之臂mini2440》

flyslightly.cublog.cn



要知道需要修改那些文件就要分析顶层Makefile【bootloader是什么?分为几个阶段?每阶段分别完成什么任务?】
根据README,先要运行make <board_name>_config然后再运行make来生成uboot执行文件,根据makefile的语法这个<board_name>_config必然是makefile中定义的一个target,那么我们就要
①仿照其他的开发板来建立自己开发板的<board_name>_config,与我的开发板最相近的为smdk2410,所以根据smdk2410_config来写自己的gateway_config并加入到顶层makefile中;从顶层makefile中<board_name>_config目标的执行命令可以看出调用了mkconfig脚本,正常执行本脚本后应该会在./include中生成两个文件:config.mk和config.h并且会将输入的参数传递到ARCH、CPU、BOARD、VENDOR、SOC几个变量中,且在生成的config.h文件中将包含configs/$1.h文件,所以我们要
②在configs下建立自己开发板的.h头文件,可以通过拷贝相似开发板的头文件;
③修改子目录下的makefile;
④修改源文件中与2440不符的内容。
一个调试方法就是用板子上已能正常跑起来的bootloader将刚改过编译好的uboot下载到内存中运行,具体操作为:定义CONFIG_SKIP_LOWLEVEL_INIT为“1”,或者注释掉start.s中
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
bl cpu_init_crit
#endif
这三句中间的那句跳转,然后修改当前开发板目录下的config.mk中的text_base为0x33000000,使用vivi命令load ram 0x33000000 0x17ea8 x将u-boot.bin装入内存。再用go 0x33000000命令,即可。


· 1、建立开发板目录,因为开发板跟smdk2440的硬件结构类似,而u-boot中最相近的配置为smdk2410,所以先复制smdk2410开发板目录为新的开发板目录:#cp -r /board/smdk2410 /board/hgateway。
· 2、将开发板目录中的开发板配置文件更名#mv /board/smdk2410/smdk2410.c /board/smdk2410/hgateway.c。
· 3、修改/board/hgateway下的makefile,将COBJS:=smdk2410.o flash.o改为COBJS:=hgateway.o flash.o
· 4、在/include/configs下建立新的开发板配置头文件#cp /include/configs/smdk2410.h /include/configs/hgateway.h。
· 5、修改顶层Makefile文件建立新开发板选项:在smdk2410_config:unconfig下增加:
hgateway_config:unconfig
@$(MCCONFIG)$(@:_config=)arm arm920t gateway NULL s3c24x0
注意还要改一点:__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
改为:__LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS)) 网上说UBOOT1.3.3以后Makefile发生了变化,编译器会将我们添加唉的用于nandboot的子函数放到4k以后。这个可以通过比较查看System.map文件可知。(有时间真要把这个两个编译一下比较看看)
这时执行#make hgateway_config&&make all可以顺利得到u-boot.bin文件了,但是别忘了这是对S3C2410的,并且是针对smdk2410开发板的,如果下到我们自己的开发板上,呵呵因为硬件配置不同,肯定是跑不起来的。下面就要更改源文件,编译出适合我们自己开发板的u-boot了。
· 6、根据芯片Datasheet及板子的硬件配置更改相应的源文件,根据顶层makefile可知,跟移植相关的几个文件夹及文件为:cpu/arm920t/start.S;cpu/arm920t/s3c24x0/;lib_arm/;board/hgateway/。首先是CPU初始化的汇编文件,根据顶层Makefile的可知在/cpu/arm920t下的start.S文件,其次是cpu/soc/下的相关文件,再次是改include/config/<board_name>.h,然后就是更改跟板密切相关的/board/下的开发板子目录中的文件。(我的开发板的LED状况:LED1-GPF6,LED2-GPF7低电平亮)
·Ⅰ、更改/cpu/arm920t/start.S这是bootloader的stage1负责初始化硬件环境并把uboot从flash加载到RAM中,然后跳转到C语言中去。之所以后缀名为大写是因为start.S中有很多预处理,而GNU as是不能做宏处理和文件包含处理的,要处理这些宏只有交给CPP预处理器来做,查看GCC帮助可以看出要用大写的S才能。【来源于天行者博客vivi源码分析】,注意在这个文件中包含了config.h,而config.h是由mkconfig生成的,其中只有一句话"#include <configs/$1.h>",所以注意再更改完start.S及相关的启动文件后还要更改configs/$1.h中有关板子的配置。
第一阶段流程:
· 异常向量表
· 置处理器为管理模式
· 关闭看门狗(加入对S3C2440的支持:defined(CONFIG_S3C2440))
· 关闭所有中断(S3C2440的INTSUBMSK寄存器有15位可用,加入对S3C2440的支持的代码)
· 设置LOCKTIME寄存器
· 设置摄像头时钟分频寄存器
· 设置时钟分频(S3C2440的时钟高达400M,设置分频为1:4:8)
· 设置写处理器P15给快时钟一个缓冲
· 写UPLLCON寄存器,使USB的PLL时钟生效
· 等待USB的PLL时钟生效
· 写MPLLCON寄存器,使主PLL生效,产生FCLK时钟
· CPU初始化
关闭CACHE和MMU
底层硬件初始化(这里跟开发板密切相关,需要更改,主要更改lowlevel_init.S文件)
将UBOOT自己拷贝到RAM中(这里加上从NAND启动,因为S3C2440的NAND的前4K为自启动区,所以只要在4K范围内完成前面的工作及其自身的拷贝就可以了。这里加上的代码为对NAND的初始化,以及将UBOOT从NAND搬移到RAM的功能)
跳到C语言中完成第二阶段
分析start.S可知,在uboot中为了做到通用性,将跟特定SOC或开发板有关的初始化都放到板级目录下的lowlevel_init.S中去了。所以uboot的第一阶段初始化其实涉及到两个文件start.S和板级目录下的lowlevel_init.S
·Ⅱ、更改/board/hgateway/lowlever_init.S,此文件主要完成对储存器的初始化.
· 1、因为S3C2410和S3C2440的内存控制寄存器的地址相同,所以寄存器的地址不用更改。
· 2、因为内存芯片可能不同,需要修改相应BANKCON的值。自己开发板所用的芯片为:HY57V566120FTP-H,RAS to CAS的延时最小要求20ns,若HCLK(就是提供给SDRAM的时钟)为100MHz的话,时钟



heiheizi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:15
  • 注册:2012年5月31日
发表于:2012-07-09 00:57:01
1楼

转让阳初S3C2440超值版开发板

由于毕业需要自己买的板子,现在毕业设计做完了,板子对我也已经没有用了。


开发硬件特性:



1 采用S3C2440A芯片作为主控制器(A型为正式量产型),由工厂批量生产,工艺保证
2 SD/MMC卡接口
3 板长15.00cm,宽11.70cm,面积更小,PCB由名厂制造,电气性能更佳
4 稳定的VGA输出功能,Wince在显示器上可以做到640X480(800x600需要自行调整)分辨率,在电视上也能够输出影像 (目前VGA功能已较为完善,TV功能软件尚未完成)
4 TV和VGA接口
5 两个RS232串口
6 音频输出接口及麦克风输入接口
7 两个USB主接口、一个USB从接口
8 在板上引出了LCD及触摸屏全功能接口
9 SPI/IIC接口、摄像头模块接口
10 16位数据总线,12位地址总线CPU总线接口
11 8路10bit ADC输入接口
12 JTAG接调试/编程接口
13 *
14 RJ45 10/100M自动反转以太网接口
15 作为开发板使用时,配备三星的64MBNAND FLASH,64MB PC133 SDRAM(32bit)



配套软件清单:



Linux相关软件 1 阳初自编译的vivi和Linux内核(支持yaffs闪存读写模块,可将闪存当作硬盘使用),附源代码(含各种驱动程序
2 arm-linux工具链,由三星软件工程师重新归纳,安装极其简便
3 vivi.tgz(bootloader源代码)
4 包含具有yaffs文件系统的内核映像文件
5 可进行VGA和TV演示的QT文件包usr.tar.gz
6 支持VGA显示输出的内核映象
* *
8 Jflash(烧写bootloader的PC端程序,在linux操作系统下运行)
9 三星SMDK2440开发套件部分资料
10 Linux2.6版本的移植,请在S3C2440开放网下载
WindowsCE相关软件 1 Wince5.0运行时,开发板FLASH空间可以作为U盘使用
2 Wince5.0稳定的VGA输出
3 SJF下载程序,用于下载bootloader到FLASH中
4 WindowsCE5.0可在VGA上,以640*480的分辨率稳定显示,流畅播放部分视频,可直接连接网线实用MSN和IE等工具访问网络





文档配置清单:



1 阳初开发板使用手册
2 完整的核心板以及开发板OrCAD/PDF格式原理
3 VIVI源代码



配件:



1 阳初S3C2440核心板一片,配置64MB NAND FLASH和64MB SDRAM
2 阳初S3C2440开发板底板一片
3 直连九针串口线一条
4 直连网线一条
5 主从USB接口线一条
6 并口JTAG下载线一条
7 开发光盘一张(内容可能随时更新 ,请您留意我们网站的通知)
8 5V电源一个

 

淘宝交易地址是http://ershou.taobao.com/item.htm?id=14825098508


热门招聘
相关主题

官方公众号

智造工程师