导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    搬运一个大佬做的T113-S3裸机IAR工程,有bootloader和led闪烁demo

    其它全志芯片讨论区
    1
    1
    1414
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • zznzzn
      zznzzn LV 6 最后由 q1215200171 编辑

      本文转自坑网: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

      微信图片_20230407101953.jpg

      1 条回复 最后回复 回复 引用 分享 0
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策