您尚未登录。

楼主 # 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

离线

#1 2023-04-07 11:25:51

飞翔2024
会员
注册时间: 2023-04-07
已发帖子: 3
积分: 3

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

可以的!全志的SOC的裸机设计,bootloader的demo值得研究

离线

#2 2023-04-07 11:48:05

dykxjh
会员
注册时间: 2020-03-25
已发帖子: 153
积分: 158

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

点赞。我喜欢裸机。不喜欢系统。
裸机
1.资源占用小,尤其是RAM。
2.实时响应可控,想要实时性高的用中断,实时性低的用轮训。

离线

#3 2023-04-07 15:48:35

xfdr0805
会员
注册时间: 2020-07-23
已发帖子: 291
积分: 344

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

感谢分享 目前裸机对我来说最大的痛点就是那些个sdio的wifi模块没法子用起来了 只得上重量级选手Linux了

离线

#4 2023-04-07 15:52:50

musich
会员
注册时间: 2018-04-17
已发帖子: 225
积分: 257

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

不错, 有空研究一下

离线

#6 2023-04-08 18:53:00

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 519
积分: 640
个人网站

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

xfdr0805 说:

感谢分享 目前裸机对我来说最大的痛点就是那些个sdio的wifi模块没法子用起来了 只得上重量级选手Linux了

可以上RT-Thread呀,它支持SDIO WiFi。

离线

#7 2023-04-09 20:11:28

vigour1000
会员
注册时间: 2018-11-19
已发帖子: 100
积分: 6

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

有外部RAM实始化加载就好

离线

#8 2023-04-11 09:44:51

1847123212
会员
注册时间: 2019-11-21
已发帖子: 66
积分: 42

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

这个可以啊,不知道有没有别的外设驱动

离线

#10 2023-04-19 21:21:27

stephone
会员
注册时间: 2019-10-09
已发帖子: 57
积分: 9

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

太爱了,感觉使用IAR类裸机调试方便得不要不要的,特别是调试BUG或者对接新模块等

离线

#11 2023-07-21 09:08:23

lijian100
会员
注册时间: 2023-03-21
已发帖子: 1
积分: 1

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

@zengyi703
付费下载学习下下。。谢谢  支持自动开启双核工作的吗?

离线

#13 2023-09-01 15:33:35

飞翔2024
会员
注册时间: 2023-04-07
已发帖子: 3
积分: 3

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

难度太高了,实在是从中学不到什么了.

离线

#16 2023-09-22 01:12:31

GenaSPB
会员
注册时间: 2023-07-15
已发帖子: 11
积分: 1

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

Dual-core baremetal t113-s3 project here
https://github.com/ua1arn/hftrx/tree/develop

最近编辑记录 GenaSPB (2023-09-22 01:12:57)

离线

#17 2023-09-25 13:07:39

3050311118
会员
注册时间: 2020-09-08
已发帖子: 69
积分: 59

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

资料开放吗?用裸机的话

离线

#18 2023-10-20 23:27:00

houge
会员
注册时间: 2023-10-18
已发帖子: 7
积分: 12

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

T113是双核吧,怎么在裸机中让两个核都运行呢

离线

#19 2023-10-21 00:45:41

GenaSPB
会员
注册时间: 2023-07-15
已发帖子: 11
积分: 1

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

Start second core on T113-s3:

//	3.4.2.4 CPU0 Hotplug Process
//
//	The Hotplug Flag Register is 0x070005C0.
//	The Soft Entry Address Register is 0x070005C4.

//	3.4.2.3 NON_CPU0 Boot Process
//
//	The Soft Entry Address Register of CPU0 is 0x070005C4
//	The Soft Entry Address Register of CPU1 is 0x070005C8

#define HARDWARE_HOTPLUG_FLAG 0xFA50392F	// CPU Hotplug Flag value

// In Allwinner h133 this i/o block named R_CPUCFG

//#define HARDWARE_NCORES 2

static void aarch32_mp_cpuN_start(uintptr_t startfunc, unsigned targetcore)
{
	const uint32_t CORE_RESET_MASK = UINT32_C(1) << targetcore;	// CPUx_CORE_RESET
	volatile uint32_t * const rvaddr = ((volatile uint32_t *) (R_CPUCFG_BASE + 0x1c4 + targetcore * 4));
	ASSERT(startfunc != 0);
	ASSERT(targetcore != 0);

	C0_CPUX_CFG->C0_RST_CTRL &= ~ CORE_RESET_MASK;
	* rvaddr = startfunc;
	ASSERT(* rvaddr == startfunc);
	dcache_clean_all();	// startup code should be copied in to sysram for example.
	C0_CPUX_CFG->C0_RST_CTRL |= CORE_RESET_MASK;
}

Each core has own cache, MMU, part of GIC

Registers definitions: https://whycan.com/files/members/12476/t113s3.zip

最近编辑记录 GenaSPB (2023-10-21 00:50:26)

离线

#20 2023-10-21 21:41:29

houge
会员
注册时间: 2023-10-18
已发帖子: 7
积分: 12

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

我也用mksunxi.exe生成了bin文件,但是就是在nand flash跑不起来,是不是mksunxi.exe有什么要修改的?

离线

#22 2023-11-01 17:32:33

zm
会员
注册时间: 2023-09-28
已发帖子: 9
积分: 25

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

楼主,你的串口确定有打印吗?为啥我烧了bootloader.bin后重启灯是亮了但串口一直没打印啊?

离线

#23 2023-11-02 21:28:23

vasilius
会员
注册时间: 2023-10-20
已发帖子: 7
积分: 32

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

Will jlink v9 works with the T113?

离线

#24 2023-11-03 08:56:50

skrlaoshiren
会员
注册时间: 2019-12-03
已发帖子: 26
积分: 86

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

vasilius 说:

Will jlink v9 works with the T113?

JLink v9 doesn't support SWD multidrop, so it doesn't support debugging dual core at the same time but it works with single core.
https://whycan.com/t_8407.html

离线

#25 2023-11-03 19:51:55

vasilius
会员
注册时间: 2023-10-20
已发帖子: 7
积分: 32

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

skrlaoshiren 说:
vasilius 说:

Will jlink v9 works with the T113?

JLink v9 doesn't support SWD multidrop, so it doesn't support debugging dual core at the same time but it works with single core.
https://whycan.com/t_8407.html

Thx. Have ordered V9 on local market.
I just want in attach mode to connect to CPU0 and check setup of peripheries.
Want to load with xfel and debug with jtag.
For second core plan to use UART.

离线

#26 2023-11-11 16:55:46

ueiia
会员
注册时间: 2021-04-30
已发帖子: 29
积分: 12

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

什么时候裸机能支持USB HOST,可以连U盘,可以连USB WIFI蓝牙,我就什么时候切裸机,Linux实在臃肿

离线

#27 2023-11-13 03:10:33

GenaSPB
会员
注册时间: 2023-07-15
已发帖子: 11
积分: 1

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

Some usb wifi dongles are closed sources. No specifications avaliable

最近编辑记录 GenaSPB (2023-11-13 03:11:08)

离线

#28 2023-11-13 12:27:22

1847123212
会员
注册时间: 2019-11-21
已发帖子: 66
积分: 42

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

赞一个,就是外设驱动少了点

离线

#31 2023-12-01 20:18:55

lg676041036
会员
注册时间: 2021-07-09
已发帖子: 35
积分: 34

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

刚好手里有块T113-S3的板子吃灰很久了,感谢楼主分享,下载下来试试。

离线

#32 2024-01-01 15:31:26

jxmlegend
会员
注册时间: 2019-11-22
已发帖子: 42
积分: 27

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

包含了哪些外设?

离线

#34 2024-01-06 17:16:30

duyi324
会员
注册时间: 2022-01-25
已发帖子: 2
积分: 2

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

128M内存跑裸机那不得飞起

离线

#35 2024-01-09 21:55:12

eagletskt
会员
注册时间: 2020-04-13
已发帖子: 8
积分: 8

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

不错,正想在T113上跑rtos,一直没成功哎,苦闷得很,希望能借鉴楼主的demo来运行成功

离线

#36 2024-01-10 15:24:27

为了开源梦想
会员
注册时间: 2024-01-10
已发帖子: 9
积分: 2

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

楼主的思维,让我们从裸机跳转到操作系统有了阶梯

离线

#38 2024-02-18 21:24:44

myturkey
会员
注册时间: 2024-02-18
已发帖子: 1
积分: 1

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

T113S3如果可以跑裸机的话
那就实在不错啊

离线

#39 2024-02-19 01:06:39

paul_zdchun
会员
注册时间: 2024-01-23
已发帖子: 26
积分: 6

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

裸机干脆利落,不过要有一个双核调度

离线

#40 2024-02-27 11:42:52

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 565
积分: 570
个人网站

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

我是买的开发板,板载SPI Nand,已经修改为SPI nor。
T113-M2_board.png
板子用的是uart3,所以修改了一下代码。
T113-M2_UART.png
T113-M2_UART_code.png
编译,处理头部,烧录
T113-M2_UART_download.png

结果,灯亮了,但是串口没信息。

离线

#41 2024-02-27 12:34:40

506826164@qq.com
会员
注册时间: 2022-08-07
已发帖子: 45
积分: 70

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

@LinjieGuo
看看串口3的时钟打开了没

离线

#42 2024-02-27 13:39:42

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 565
积分: 570
个人网站

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

串口3的时钟应该是开了,工程里面根据id作为偏移量开启时钟的。

void sunxi_usart_init(sunxi_usart_t *usart)
{
  uint32_t addr;
  uint32_t val;

  /* Config usart TXD and RXD pins */
  sunxi_gpio_init(usart->gpio_tx.pin, usart->gpio_tx.mux);
  sunxi_gpio_init(usart->gpio_rx.pin, usart->gpio_rx.mux);

  /* Open the clock gate for usart */
  addr = T113_CCU_BASE + CCU_USART_BGR_REG;
  val	 = read32(addr);
  val |= 1 << usart->id;
  write32(addr, val);

  /* Deassert USART reset */
  addr = T113_CCU_BASE + CCU_USART_BGR_REG;
  val	 = read32(addr);
  val |= 1 << (16 + usart->id);
  write32(addr, val);

  /* Config USART to 115200-8-1-0 */
  addr = usart->base;
  write32(addr + 0x04, 0x0);
  write32(addr + 0x08, 0xf7);
  write32(addr + 0x10, 0x0);
  val = read32(addr + 0x0c);
  val |= (1 << 7);
  write32(addr + 0x0c, val);
  write32(addr + 0x00, 0xd & 0xff);
  write32(addr + 0x04, (0xd >> 8) & 0xff);
  val = read32(addr + 0x0c);
  val &= ~(1 << 7);
  write32(addr + 0x0c, val);
  val = read32(addr + 0x0c);
  val &= ~0x1f;
  val |= (0x3 << 0) | (0 << 2) | (0x0 << 3);
  write32(addr + 0x0c, val);
}

时钟相关代码应该是这几行。
/* Open the clock gate for usart */
  addr = T113_CCU_BASE + CCU_USART_BGR_REG;
  val     = read32(addr);
  val |= 1 << usart->id;
  write32(addr, val);

  /* Deassert USART reset */
  addr = T113_CCU_BASE + CCU_USART_BGR_REG;
  val     = read32(addr);
  val |= 1 << (16 + usart->id);
  write32(addr, val);

最近编辑记录 LinjieGuo (2024-02-27 13:40:32)

离线

#43 2024-02-28 10:04:46

506826164@qq.com
会员
注册时间: 2022-08-07
已发帖子: 45
积分: 70

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

@LinjieGuo
我手上只有D1s,测试了下PB6 PB7上uart3,打印正常,两个芯片pin to pin,t113s3应该问题不大,参考下xboot中t113s3 uart代码

离线

#44 2024-02-28 15:00:07

hpxzw520
会员
注册时间: 2020-11-18
已发帖子: 28
积分: 10

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

@zengyi703
谢谢分享,请问裸机的话
网络、usb-host、MIPI显示、音频wav播放,这些有没有调通?

离线

#45 2024-03-06 13:56:41

hpxzw520
会员
注册时间: 2020-11-18
已发帖子: 28
积分: 10

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

ueiia 说:

什么时候裸机能支持USB HOST,可以连U盘,可以连USB WIFI蓝牙,我就什么时候切裸机,Linux实在臃肿

我找到一个资料,你可以参考下
https://github.com/robots/allwinner_t113
T113裸机的话,我这边需要pwm、mipi、网络、音频wav播放,这些资料目前没找到
挺头疼的

离线

#46 2024-03-12 09:46:58

dsp2000
会员
注册时间: 2024-01-21
已发帖子: 27
积分: 2

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

mksunxi.exe bootloader.bin 出错
The bootloader head has been fixed, spl size is -455278592 bytes

离线

#47 2024-03-12 09:47:59

dsp2000
会员
注册时间: 2024-01-21
已发帖子: 27
积分: 2

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

芯片资料是开放的, 用裸机全部需要自己处理

离线

#48 2024-03-12 15:32:24

forscra
会员
注册时间: 2024-03-12
已发帖子: 1
积分: 1

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

感谢分享 目前裸机对我来说最大的痛点就是那些个sdio的wifi模块没法子用起来了 只得上重量级选手Linux了

离线

#49 2024-03-19 00:06:31

jxmlegend
会员
注册时间: 2019-11-22
已发帖子: 42
积分: 27

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

printf函数兼容性差,裸机程序中最好不用printf,用iar(9.32)重新编译后烧写到flash中,串口没有任何输出,禁用printf后程序就正常了

离线

#53 2024-04-01 16:44:20

lyy
会员
注册时间: 2024-01-20
已发帖子: 14
积分: 14

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

这个串口可以打印信息,该怎么样通过中断接收串口数据呢,没试成功,有大佬试过吗

离线

页脚

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

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