历史上的今天
今天是:2024年11月10日(星期日)
2021年11月10日 | mini2440_uboot移植笔记
2021-11-10 来源:eefocus
一、准备阶段
下载软件:u-boot 下载地址:ftp://ftp.denx.de/pub/u-boot/
u-boot-2009.11.tar.bz2 为《friendlyARM》参考文档版本
u-boot-2010.03.tar.bz2 为《申嵌-uboot移植》参考文档版本
本次使用较新的uboot版本:u-boot-2010.03.tar.bz2
tar xvjf /yang/uboot_tools/u-boot-2010.03.tar.bz2
二、建立开发板文件,测试编译环境(6.1)
1、修改顶层Makefile(6.1.1) (目的:定义交叉编译工具链和开发板配置选项)
vim Makefile
CROSS_COMPILE ?=arm-linux-
yang2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t yang2440 samsung s3c24x0
2、在/board 中建立yang2440 目录和文件(6.1.2)
复制sbc2410x 的文件(config.mk flash.c lowlevel_init.S Makefile yang2440.c)到此,做适当修改
cd samsung/
mkdir yang2440
cd yang2440
cp -arf /yang/uboot/u-boot-2010.03/board/sbc2410x/* ./
mv sbc2410x.c yang2440.c
修改此目录下的:vim Makefile
COBJS := sbc2410x.o flash.o修改为:
COBJS := yang2440.o flash.o
3、在include/configs/中建立开发板配置文件(6.1.3)
cp include/configs/sbc2410x.h include/configs/yang2440.h
4、测试编译环境(6.1.4)
make yang2440_config
make
编译通过
压缩:tar cjf u-boot-2010.03_000.tar.bz2 u-boot-2010.03
二、修正配置文件
1、修改配置文件(6.5.2) include/configs/yang2440.h
vim include/configs/yang2440.h
//#define CONFIG_S3C2410 1 /* specifically a SAMSUNG S3C2410 SoC */
//#define CONFIG_SBC2410X 1 /* on a friendly-arm SBC-2410X Board */
/**************** add by yangchaofeng ***********************************/
#define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2440 SoC */
#define CONFIG_YANG2440 1 /* on a YANG2440 Board */
#define CONFIG_YANG2440_LED 1
#define CONFIG_S3C2410_NAND_SKIP_BAD 1 /* input clock of PLL */
/**************** add by yangchaofeng ***********************************/
修改vim include/asm/arch/s3c24x0_cpu.h 对S3C2440支持
#ifdef CONFIG_S3C2400
#include #elif defined CONFIG_S3C2440 #include #else 2、添加CONFIG_S3C2440 定义,目的:对CONFIG_S3C2440的支持 (6.5.1) 按照手册依次修改以下文件(6.5.1): ->common/serial.c cpu/arm920t/s3c24x0/interrupts.c ->cpu/arm920t/s3c24x0/timer.c ->include/serial.h ->cpu/arm920t/s3c24x0/speed.c include/asm-arm/arch-s3c24x0/s3c24x0.h(主要存放寄存器定义) ->s3c24x0_dma ->-->s3c24x0_clock_power ->s3c2410_nand ->-->s3c24x0_gpio 编译通过 压缩:tar cjf u-boot-2010.03_001.tar.bz2 u-boot-2010.03 三、探索启动代码(6.2) (cpu/arm920t/start.S) 1、修改CPU 频率初始化设置(6.2.2) vim cpu/arm920t/start.S 加入: #define CLK_CTL_BASE 0x4C000000 #define MDIV_405 0x7f << 12 #define PSDIV_405 0x21 #define MDIV_200 0xa1 << 12 #define PSDIV_200 0x31 #if defined(CONFIG_S3C2440) ldr r1, =0x7fff ldr r0, =INTSUBMSK str r1, [r0] #endif #if defined(CONFIG_S3C2440) /* FCLK:HCLK:PCLK = 1:4:8 */ ldr r0, =CLKDIVN mov r1, #5 str r1, [r0] mrc p15, 0, r1, c1, c0, 0 orr r1, r1, #0xc0000000 mcr p15, 0, r1, c1, c0, 0 mov r1, #CLK_CTL_BASE mov r2, #MDIV_405 add r2, r2, #PSDIV_405 str r2, [r1, #0x04] #else/* FCLK:HCLK:PCLK = 1:2:4 */ /* default FCLK is 120 MHz ! */ ldr r0, =CLKDIVN mov r1, #3 str r1, [r0] #endif /* CONFIG_S3C24X0 */ 2、修改lowlevel_init.S 文件(6.2.3) 为了匹配mini2440 的存储器位宽、速度、刷新率(总线上连接的Nor Flash 和SDRAM),需要修改lowlevel_init.S文件。 vim board/samsung/yang2440/lowlevel_init.S #if defined(CONFIG_S3C2440) #define Trp 0x2 /* 4clk */ #define REFCNT 1012 #else #define Trp 0x0 /* 2clk */ #define REFCNT 0x0459 #endif #define B4_BWSCON (DW16 + WAIT + UBLB) #define B3_BWSCON (DW16) 3、修改代码重定向部分 cpu/arm920t/start.S(6.2.4) 按照手册,添加相关代码 cp /yang/uboot_tools/u-boot-2010.03/board/embedclub/smdk2440a/nand_read.c board/samsung/yang2440/ vim board/samsung/yang2440/Makefile COBJS := nand_read.o yang2440.o flash.o m cpu/arm920t/u-boot.lds board/samsung/yang2440/lowlevel_init.o board/samsung/yang2440/nand_read.o 再次编译、烧写。串口有数据输出。此时LED1、LED3长亮,蜂鸣器长响! 4、关闭为AT9200 写的LED 跳转(6.2.1) /* 注释这两行 bl coloured_LED_init bl red_LED_on */ vim board/samsung/yang2440/yang2440.c 原因在此://蜂鸣器为pwm输出功能,LED1、LED2、LED3、LED4依次为:输出、输入、输出、输入 gpio->GPBCON = 0x00044556; gpio->GPBUP = 0x000007FF; 加入: #ifdef CONFIG_YANG2440_LED bl LED_on #endif 编译通过 压缩:tar cjf u-boot-2010.03_002.tar.bz2 u-boot-2010.03 将u-boot下载测试,可以输出信息。ED1、LED2、LED3、LED4亮一下,蜂鸣器响一下 四、修改初始化代码(6.3) 1、修改 board/samsung/yang2440/yang2440.c (6.3.2) vim board/samsung/yang2440/yang2440.c ->FCLK_SPEED ->board_init //将4个LED管脚和buzzer设为输出 vim include/asm-arm/mach-types.h 添加机器码 #define MACH_TYPE_YANG2440 1900 编译通过 压缩:tar cjf u-boot-2010.03_003.tar.bz2 u-boot-2010.03 增加debug信息输出:vim include/common.h #define DEBUG 1 2、修改lib_arm/board.c 文件(6.3.1) 不做修改!无意义!!! 4、继续完善:CONFIG_S3C2440 定义,目的:对CONFIG_S3C2440支持 (6.5.1) 按照手册依次修改以下文件(6.5.1): drivers/i2c/s3c24x0_i2c.c include/asm-arm/arch-s3c24x0/s3c24x0.h(主要存放寄存器定义) -> s3c24x0_interrupt ->usb_device ->sdi (SD) 编译通过 压缩:tar cjf u-boot-2010.03_004.tar.bz2 u-boot-2010.03 除LCD及video外,其它相关配置均已修改完成! 5、继续修改配置文件(6.5.2)include/configs/yang2440.h vim include/configs/yang2440.h ->Hardware drivers (DM9000) 6、 修改网络相关代码 (6.4.4) drivers/net/dm9000x.c ->dm9000_init 修改完后,编译、烧写。ping 测试网卡可以正常工作!!! 压缩:tar cjf u-boot-2010.03_005.tar.bz2 u-boot-2010.03 7、修改网络相关代码 (6.4.4) net/nfs.c ->#define NFS_TIMEOUT (10*2000UL) 修改为:CONFIG_BOOTCOMMAND=u-boot启动时不进入命令行下的默认执行命令: #define CONFIG_BOOTCOMMAND "nfs 30008000 192.168.0.250:/opt/zImage.img;bootm" nfs烧写下载成功,内核启动不成功!!! 刚开始怀疑是不是因为nand的问题,后来想了想,改了回了自己写的机器码1900->1999 vim include/asm-arm/mach-types.h 添加机器码 编译,烧写,内核启动成功!!! #define CONFIG_SYS_PROMPT "[u-boot@YANG2440]# " #define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/nfs " "nfsroot=192.168.0.250:/yang/filesystem/myfs_mini " "ip=192.168.0.230:192.168.0.250:192.168.0.1:255.255.255.0:debian:eth0:off" 利用自己编译的文件系统,通过nfs挂接设置并成功!!! 压缩:tar cvjf u-boot-2010.03_006.tar.bz2 u-boot-2010.03 修改:#define CONFIG_SYS_LOAD_ADDR 0x30008000 #define CONFIG_BOOTCOMMAND "nfs 192.168.0.250:/opt/zImage.img;bootm" //取掉了30008000 常用: nfs启动:nfs 30008000 192.168.0.250:/opt/zImage.img nfs 192.168.0.250:/opt/uImage-shenqian bootm setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
史海拾趣
|
中国的汽车产业在今年很有可能触及或跨越年产销一千万辆这个门槛,事实上在实现这个目标以前,中国就已经成为仅次于美国的全球第二大汽车市场。在当前的汽车中,汽车电子系统所占的比重越来越大,很多特色化的功能都是依赖汽车电子技术来实现的,如 ...… 查看全部问答> |
|
我是新手,以前都是跟着导师做单片机的。感觉单片机有点“不过瘾”的感觉,想往高深的学。想学linux下嵌入式编程,但是身边又没有的这方面的资源。于是想买一块开发板子。请问:淘宝上的那种便宜的开发板比如像2410、2440板子能买不?? 问题1:开 ...… 查看全部问答> |
|
本人在校学生,最近做的项目都用到了一些驱动的开发,感觉底层这方面的编程比普通的软件开发难度大一点。如果是软件公司招聘的话,他们会招聘新手吗?个人感觉做这方面的真正开发,都是有多年经验的老手。… 查看全部问答> |
|
三、伺服系统调试 接通伺服驱动器的电源, 先进入测试调整模式,测试调整模式可以执行伺服驱动器的测试操作,报警复位和参数编辑等等.其数字操作器的按键说明如表1: 键 出现的情况 MOD 在不同模式 ...… 查看全部问答> |
|
2812调试时关于看门狗的一些问题 大家好, 我目前正在调试一块自己做的2812的板子,遇到关于看门狗的一些问题: 一点连续运行按钮程序就跳到3FFC00处(此处应该是复位向量),而点单步运行的时候程序可以走的.点连续运行的时候用示波器观察reset引脚,发 ...… 查看全部问答> |
|
单片机的接收端是连接的GPS信号, 发送端连接的是GPRS的接收。 单片机就是把收到的经纬度找出来传给GPRS,用UDP发送。 只要不连GPS, 发送的数据就完全正确。 连了GPS之后,数据就乱了,GPS是一直在发送,速度很快 #include #include #incl ...… 查看全部问答> |




