搬运一个大佬做的T113-S3裸机IAR工程,有bootloader和led闪烁demo
-
本文转自坑网:https://whycan.com/t_9627.html
作者@zengyi703本人喜欢折腾
本贴给喜欢裸机开发的人,提供一个思路。
不欢迎上来就讨论裸机无用、裸机麻烦、嘲笑只会用现成IDE不研究GCC和系统的人,请绕行。
本人也是初次用这些,程序难免存在一些问题和不懂的地方,欢迎一块讨论。一、IAR工程下的bootloader
iar_bootloader\project\bootloader\iar目录下面有IAR工程。可以用jlink仿真,可以烧写到spinor(W25Q256)。
1.此bootloader是将awboot移植(抄袭)到了IAR下面,做了魔改,用来支持spinor flash(因为手里只有spinor flash),启动裸机程序。
2.这个bootloader含有t113-s3芯片的加载头,会初始化led,uart,clk,ddr,spi等外设。芯片上电从spi flash启动时,T113-S3内部的BROM会识别加载头,并将bootloader程序加载到T113-S3的内部SRAM(0x00020000),并运行。然后bootloader会读取spinor flash里面(0x00100000-0x00200000)的内容到DDR(0x40000000),并跳转到DDR运行。所以裸机程序需要烧写到spinor flash的(0x00100000-0x00200000)处。
/* Boot head information for BROM */ b __iar_program_start ;DCD 0xEA000016 DCB 'e', 'G', 'O', 'N', '.', 'B', 'T', '0' DCD 0x12345678 /* checksum */ DCD 20000 /* spl size:little large then .bin*/ DCD 0x30 /* boot header size */ DCD 0x30303033 /* boot header version */ DCD 0x00020000 /* return value */ DCD 0x00028000 /* run address */ DCD 0x0 /* eGON version */ DCB 0x00, 0x00, 0x00, 0x00 /* platform information - 8byte */
3.此bootloader用IAR编译完会生成bootloader.bin,然后需要使用mksunxi.exe,把.bin文件的大小信息添加到加载头。
mksunxi.exe bootloader.bin
4.然后将带有大小信息的bootloader.bin,烧写到spinor flash的0x00000000处。
xfel.exe spinor write 0x0 bootloader.bin
5.重新启动,串口会打印信息,串口使用的是PB4,PB5引脚,波特率115200.
------BootLoader Info--------------------- BootLoader spinor memory map: AWBoot: 0x00000000-0x00010000 64KB User Bin: 0x00100000-0x00200000 1MB BootLoader sdram memory map: Bare ROM: 0x40000000-0x40100000 1MB Bare RAM: 0x40100000-0x40200000 1MB ------BootLoader Start-------------------- DRAM: TYPE = DDR3, CLK = 792 MHz DRAM: SIZE = 128MB CLK: PLL_CPUX = 1200MHz CLK: PLL_PERI(2X) = 1200MHz CLK: PLL_PERI(1X) = 600MHz CLK: PLL_PERI(800) = 800MHz CLK: PLL_DDR = 1584MHz SPI: CLKIN = 600MHz, DIV = 3, N = 1, M = 3 SPI: CLOCK ACTUAL = 100MHz MCLK = 200MHz DMA: USE CHANNEL 0 SPI-NOR: MFR:0xEF DEV:0x4019 SPI NOR: READ USER BIN TIME:20986uS ------BootLoader Jump Successed-----------
bootloader使用的的spinor空间在0x00000000-0x00010000预留了64KB。 裸机程序使用的spinor空间在0x00100000-0x00200000预留了1MB。
二、IAR下的LED工程
1.编译运行
iar_project\project\1_demo\iar目录下面有IAR工程,可以用Jlink连接板子进行仿真,也可以编译完成后生成一个demo.bin文件,烧写到spinor(0x00100000)。链接地址是0x40000000
可以用如下命令烧写到spinor
xfel.exe spinor write 0x100000 demo.bin`命令烧写到spinor.
重启后,会发现bootloader已经将led程序加载并运行起来,闪灯。
总的来说,就是先烧写bootloader到spinor的0x0处,再烧写demo.bin到spinor的0x00100000处
这样重启后就会先运行bootloader,再运行裸机程序demo.bin。完整工程分享到这里:(链到哇酷自行下载)
t113-s3.rar
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号