完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
裸机程序SD卡启动BL1拷贝BL2到DDR2中运行; 代码的拷贝会用到一些指针函数,第一个参数为SD卡存放BL2的开始BLOCK,第二个参数为BL2大小有几个BLOCK,第三个参数为BL2拷贝到的目的地址,第四个参数为外部晶振大小,irom会根据其将EPLL设为25MHz,第三个参数设为0。 MMC Copy Function Address Exermal source clock parameter is used to fit EPLL source at 25MHZ*This function copy MMC(MoviNAND/iNand)Card Date to memory*Always use EPLL source clock*This function work at 25MHZ*@param u32 StartBlkAddress:source card (MoviNAND/iNand MMC)Address.(It must block address)*@param u16 blockSize:Number of blocks to copy*@param u32*memoryptr:Buffer to copy from*@param u32extClockspeed:External clock speed(per HZ)*@param bool with_init:determined card initialization*@Return bool(u8)-success or failure #define copyMovitoMen (a,b,c,d,e)(bool(*)(u32,u16,u32*,u32,bool))(*(u32*)0x40004008)(a,b,c,d,e) BL1 copy: #include "types.h" typedef u32(*copy_sd_mmc_to_mem)(u32 startBlkAdress,u16 blockSize,u32*memoryPtr,u32 extClockSpeed,u32 init); void copy_sd(u32 start_block,u16 block_size,u32 addr) { copy_sd_mmc_to_mem copy_b12=(copy_sd_mmc_to_mem)(*(u32*)(0x40004008)); copy_b12(start_block,block_size,(u32*)addr,1200000,0); } BL1 main: #include "uart.h" int main () { puts("n##### s3s2451 Running in bl1 #####"); copy_sd(8,2,0x30000000); return 0; } BL1 start.S: .global _start /* 声明一个全局的标号 */ _start: bl uart_init /* 串口初始化 */ bl ddr_init /* DDR初始化 */ bl main /* 跳转到C函数去执行 */ ldr sp, =0x34000000 /* 重新设在栈为DDR内存的最高地址 */ ldr pc, =0x30000000 /* 跳转到bl2的起始地址执行 */ halt: b halt BL1 Makefile: OBJ =b11 $(OBJ).bin:start.o,uart.o,add.o,copy.o,main.o; ARM-linux-ld-Text-0,binary$(OBJ).elf $@; arm-linux-objdump-D $(OBJ).elf>$(OBJ).dis; %.o:%.c arm-linux-gcc-c$<-o$@-fno-builtin; %.o:%.s arm-linux-gcc-c$<-o$@ ; clean: rm*.o*.elf*.bin*.dis BL2 Makefile: b12.bin:start.o led.o arm-linux-ld -text 0x3000000 -o led.elf$@; arm-linux-objcopy-o binary led.elf $@ ; arm-linux-objdump-D led.elf>led.dis ; led.o:main.c arm-linux-gcc -c $<-o $@ ; start.o:start.S arm-linux-gcc -c $<-o $@ ; clean: rm*.o*.elf*.bin*.dis ; |
|
相关推荐
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
373个成员聚集在这个小组
加入小组NanoPi m3适合刷什么系统,刚接触玩,我刷了一个比较卡
5521 浏览 1 评论
7239 浏览 1 评论
4817 浏览 1 评论
【NanoPC-T4试用体验】4、手把手教你从单片机移植驱动到ARM Linux上
7826 浏览 1 评论
【NanoPC-T4试用体验】NanoPC-T4控制步进电机
24649 浏览 1 评论
NanoPi m3适合刷什么系统,刚接触玩,我刷了一个比较卡
5521浏览 1评论
475浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-8 11:45 , Processed in 0.972508 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号