您尚未登录。

楼主 # 2023-04-07 10:37:32

zengyi703
会员
注册时间: 2020-05-06
已发帖子: 8
积分: 103

分享一个自己做的T113-S3裸机IAR工程,有bootloader和led闪烁demo

本人喜欢折腾
本贴给喜欢裸机开发的人,提供一个思路。
不欢迎上来就讨论裸机无用、裸机麻烦、嘲笑只会用现成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

_20230407101953.jpg

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn