u-boot-2013.01移植

上传人:痛*** 文档编号:71177177 上传时间:2022-04-06 格式:DOC 页数:17 大小:205.50KB
收藏 版权申诉 举报 下载
u-boot-2013.01移植_第1页
第1页 / 共17页
u-boot-2013.01移植_第2页
第2页 / 共17页
u-boot-2013.01移植_第3页
第3页 / 共17页
资源描述:

《u-boot-2013.01移植》由会员分享,可在线阅读,更多相关《u-boot-2013.01移植(17页珍藏版)》请在装配图网上搜索。

1、一、 下载源码并解压#tar xvf u-boot-2013.01.tar.bz2#cd u-boot-2013.011、 指定交叉编译工具链(在u-boot-2013.01目录下)#vi Makefile在下添加二、 指定产品BOARD(找一个相似的board配置修改,这里参照board/samsung/origen/)(1) #cp -rf board/samsung/origen/ board/samsung/fs4412(2) #mv board/samsung/fs4412/ origen.c board/samsung/fs4412/fs4412.c(3) #vi board/sa

2、msung/fs4412/ Makefile修改origen.o 为 fs4412.0(4) #cp include/configs/origen.h include/configs/fs4412.h(5) #vi include/configs/fs4412.h 修改为修改为(6)#vi boards.cfg参考添加(7) #make distclean #make fs4412_config#make ARCH=arm(8)编译生成u-boot.bin文件就是可执行的镜像文件。(9)由于samsung提供的exynos需要加密才能安全启动。(sdfuse_q与 Codesign4Secur

3、eBoot是samsung的加密文件)#cp sdfuse_q u-boot-2013.01 rf#cp Codesign4SecureBoot u-boot-2013.01 rf在u-boot-2013.01目录下的 Makefile文件的 下面添加注:必须table键缩进,否则编译将出错#cp build.sh u-boot-2013.01 rf#chmod 777 u-boot-2013.01/ build.sh#./build.sh#make fs4412_config#make ARCH=arm(编译生成u-boot-fs4412.bin,将u-boot-fs4412.bin拷贝到t

4、ftpboot目录下,烧写到开发板上:#tftp 41000000 u-boot-fs4412.bin #movi write u-boot 41000000)在 下面添加1、点灯法l 在arch/arm/cpu/armv7/start.S 134 行后添加点灯程序#if 1ldr r0, =0x11000c40 GPK2_7 led2ldr r1, r0bic r1, r1, #0xf0000000orr r1, r1, #0x10000000str r1, r0ldr r0, =0x11000c44mov r1,#0xffstr r1, r0#endif1、 添加关闭看门狗代码在beq w

5、akeup_reset 后添加#if 1 /*for close watchdog */ /* PS-Hold high */ldr r0, =0x1002330cldr r1, r0orr r1, r1, #0x300str r1, r0 ldr r0, =0x11000c08ldr r1, =0x0str r1, r0/* Clear MASK_WDT_RESET_REQUEST */ldr r0, =0x1002040cldr r1, =0x00str r1, r0#endif 2、 实现串口输出修改lowlevel_init.S文件$vimboard/samsung/fs4412/lo

6、wlevel_init.Sl 添加临时栈在lowlevel_init:后添加ldr sp,=0x02060000 use iRom stack in bl2l 添加串口初始化代码在uart_asm_init: 的strr1, r0, #EXYNOS4_GPIO_A1_CON_OFFSET 后添加ldrr0, =0x10030000ldrr1, =0x666666 ldrr2, =CLK_SRC_PERIL0_OFFSETstrr1, r0, r2ldrr1, =0x777777 ldrr2, =CLK_DIV_PERIL0_OFFSETstrr1, r0, r2注释掉trustzone初始化注

7、释掉bl uart_asm_init下的bl tzpc_init重新编译u-boot$ ./build.sh3、 网卡移植l 添加网络初始化代码$vim board/samsung/fs4412/fs4412.c在struct exynos4_gpio_part2 *gpio2; 后添加#ifdef CONFIG_DRIVER_DM9000#define EXYNOS4412_SROMC_BASE 0X12570000#define DM9000_Tacs (0x1) #define DM9000_Tcos (0x1) #define DM9000_Tacc (0x5) #define DM9

8、000_Tcoh (0x1) #define DM9000_Tah (0xC) #define DM9000_Tacp (0x9) #define DM9000_PMC (0x1) struct exynos_sromc unsigned int bw;unsigned int bc6;/* * s5p_config_sromc() - select the proper SROMC Bank and configure the * band width control and bank control registers * srom_bank - SROM * srom_bw_conf -

9、 SMC Band witdh reg configuration value * srom_bc_conf - SMC Bank Control reg configuration value */void exynos_config_sromc(u32 srom_bank, u32 srom_bw_conf, u32 srom_bc_conf)unsigned int tmp;struct exynos_sromc *srom = (struct exynos_sromc *)(EXYNOS4412_SROMC_BASE); /* Configure SMC_BW register to

10、handle proper SROMC bank */tmp = srom-bw;tmp&= (0xF bw = tmp; /* Configure SMC_BC register */srom-bcsrom_bank = srom_bc_conf;static void dm9000aep_pre_init(void)unsigned int tmp;unsigned char smc_bank_num = 1;unsigned int smc_bw_conf=0;unsigned int smc_bc_conf=0; /* gpio configuration */writel(0x002

11、20020, 0x11000000 + 0x120);writel(0x00002222, 0x11000000 + 0x140); /* 16 Bit bus width */writel(0x22222222, 0x11000000 + 0x180);writel(0x0000FFFF, 0x11000000 + 0x188);writel(0x22222222, 0x11000000 + 0x1C0);writel(0x0000FFFF, 0x11000000 + 0x1C8);writel(0x22222222, 0x11000000 + 0x1E0);writel(0x0000FFF

12、F, 0x11000000 + 0x1E8); smc_bw_conf &= (0xf4); smc_bw_conf |= (17) | (16) | (15) | (14);smc_bc_conf = (DM9000_Tacs 28) | (DM9000_Tcos 24) | (DM9000_Tacc 16) | (DM9000_Tcoh 12) | (DM9000_Tah 8) | (DM9000_Tacp bd-bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); 后添加#ifdef CONFIG_DRIVER_DM9000 dm9000aep_pre_i

13、nit();#endif在文件末尾添加#ifdef CONFIG_CMD_NETint board_eth_init(bd_t *bis) int rc = 0;#ifdef CONFIG_DRIVER_DM9000rc = dm9000_initialize(bis); #endif return rc; #endifl 修改配置文件添加网络相关配置$ vim include/configs/fs4412.h修改#undef CONFIG_CMD_PING为#def ine CONFIG_CMD_PING修改#undef CONFIG_CMD_NET 为#def ine CONFIG_CMD

14、_NET在文件末尾#endif/* _CONFIG_H */ 前面添加#ifdef CONFIG_CMD_NET#define CONFIG_NET_MULTI#define CONFIG_DRIVER_DM9000 1#define CONFIG_DM9000_BASE 0x05000000#define DM9000_IO CONFIG_DM9000_BASE#define DM9000_DATA (CONFIG_DM9000_BASE + 4)#define CONFIG_DM9000_USE_16BIT#define CONFIG_DM9000_NO_SROM 1#define CON

15、FIG_ETHADDR 11:22:33:44:55:66#define CONFIG_IPADDR 192.168.9.200#define CONFIG_SERVERIP 192.168.9.120#define CONFIG_GATEWAYIP 192.168.9.1#define CONFIG_NETMASK 255.255.255.0#endifl 重新编译u-boot$ ./build.sh 4、 FLASH移植(EMMC)l 初始化EMMC$cpmovi.carch/arm/cpu/armv7/exynos/$vimarch/arm/cpu/armv7/exynos/Makefi

16、le在pinmux.o 后添加movi.o修改板级文件$vim board/samsung/fs4412/fs4412.c在#include 后面添加#include #include origen_setup.h在#ifdef CONFIG_GENERIC_MMC 后面添加u32 sclk_mmc4; /*clock source for emmc controller*/#define _REGMY(x) (*(volatile u32 *)(x)#define CLK_SRC_FSYS _REGMY(EXYNOS4_CLOCK_BASE + CLK_SRC_FSYS_OFFSET)#de

17、fine CLK_DIV_FSYS3 _REGMY(EXYNOS4_CLOCK_BASE + CLK_DIV_FSYS3_OFFSET)int emmc_init()u32 tmp;u32 clock;u32 i;/* setup_hsmmc_clock */* MMC4 clock src = SCLKMPLL */tmp = CLK_SRC_FSYS & (0x000f0000);CLK_SRC_FSYS = tmp | 0x00060000;/* MMC4 clock div */tmp = CLK_DIV_FSYS3 & (0x0000ff0f);clock = get_pll_clk

18、(MPLL)/1000000;for(i=0 ; i=0xf; i+) sclk_mmc4=(clock/(i+1);if(sclk_mmc4 = 160) /200 CLK_DIV_FSYS3 = tmp | (i0);break;emmcdbg(mjdbg sclk_mmc4:%d MHZ; mmc_ratio: %dn,sclk_mmc4,i);sclk_mmc4 *= 1000000;/* MMC4 EMMC GPIO CONFIG* GPK00SD_4_CLK* GPK01SD_4_CMD* GPK02SD_4_CDn* GPK03:6SD_4_DATA0:3*/writel(rea

19、dl(0x11000048)&(0xf),0x11000048); /SD_4_CLK/SD_4_CMD pull-down enablewritel(readl(0x11000040)&(0xff),0x11000040);/cdn set to be outputwritel(readl(0x11000048)&(34),0x11000048); /cdn pull-down disablewritel(readl(0x11000044)&(12),0x11000044); /cdn output 0 to shutdown the emmc powerwritel(readl(0x110

20、00040)&(0xf8)|(18),0x11000040);/cdn set to be outputudelay(100*1000);writel(readl(0x11000044)|(12),0x11000044); /cdn output 1writel(0x03333133, 0x11000040);writel(0x00003FF0, 0x11000048);writel(0x00002AAA, 0x1100004C);#ifdef CONFIG_EMMC_8Bitwritel(0x04444000, 0x11000060);writel(0x00003FC0, 0x1100006

21、8);writel(0x00002AAA, 0x1100006C);#endif#ifdef USE_MMC4smdk_s5p_mshc_init();#endif 将 int board_mmc_init(bd_t *bis)函数内容改写为int board_mmc_init(bd_t *bis)int i, err;#ifdef CONFIG_EMMCerr = emmc_init();#endifreturn err;在末尾添加#ifdef CONFIG_BOARD_LATE_INIT#include int chk_bootdev(void)/mj for boot device ch

22、eckchar run_cmd100;struct mmc *mmc;int boot_dev = 0;int cmp_off = 0x10;ulong start_blk, blkcnt;mmc = find_mmc_device(0);if (mmc = NULL)printf(There is no eMMC card, Booting device is SD cardn);boot_dev = 1;return boot_dev;start_blk = (24*1024/MOVI_BLKSIZE);blkcnt = 0x10;sprintf(run_cmd,emmc open 0);

23、run_command(run_cmd, 0);sprintf(run_cmd,mmc read 0 %lx %lx %lx,CFG_PHY_KERNEL_BASE,start_blk,blkcnt);run_command(run_cmd, 0);/* switch mmc to normal paritition */sprintf(run_cmd,emmc close 0);run_command(run_cmd, 0);return 0;int board_late_init (void)int boot_dev =0 ;char boot_cmd100; boot_dev = chk

24、_bootdev();if(!boot_dev) printf(nnChecking Boot Mode . EMMC4.41n); return 0;#endifl 添加相关命令$ cp cmd_movi.c common/$ cp cmd_mmc.c common/$ cp cmd_mmc_fdisk.c common/修改Makefile$ vim common/Makefile在COBJS-$(CONFIG_CMD_MMC) += cmd_mmc.o后添加COBJS-$(CONFIG_CMD_MMC) += cmd_mmc_fdisk.oCOBJS-$(CONFIG_CMD_MOVIN

25、AND) += cmd_movi.o添加驱动$ cpmmc.cdrivers/mmc/$ cp s5p_mshc.cdrivers/mmc/$ cp mmc.h include/$ cp movi.h include/$ cp s5p_mshc.h include/修改Makefile $vim drivers/mmc/Makefile 添加COBJS-$(CONFIG_S5P_MSHC) += s5p_mshc.o l 添加EMMC相关配置 $vim include/configs/fs4412.h添加#define CONFIG_EVT1 1 /* EVT1 */#ifdef CONFIG

26、_EVT1#define CONFIG_EMMC44_CH4 /eMMC44_CH4 (OMPIN5:1 = 4)#ifdef CONFIG_SDMMC_CH2#define CONFIG_S3C_HSMMC#undef DEBUG_S3C_HSMMC#define USE_MMC2 #endif#ifdef CONFIG_EMMC44_CH4#define CONFIG_S5P_MSHC#define CONFIG_EMMC 1 #define USE_MMC4 /* #define CONFIG_EMMC_8Bit */#define CONFIG_EMMC_EMERGENCY/*#def

27、ine emmcdbg(fmt,args.) printf(fmt ,#args) */for emmc debug #define emmcdbg(fmt,args.)#endif#endif /*end CONFIG_EVT1*/#define CONFIG_CMD_MOVINAND#define CONFIG_CLK_1000_400_200#define CFG_PHY_UBOOT_BASE CONFIG_SYS_SDRAM_BASE + 0x3e00000#define CFG_PHY_KERNEL_BASE CONFIG_SYS_SDRAM_BASE + 0x8000#define BOOT_MMCSD 0x3#define BOOT_EMMC43 0x6#define BOOT_EMMC441 0x7#define CONFIG_BOARD_LATE_INITl 重新编译u-boot$ ./build.sh

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!