Skip to content

Commit 1526386

Browse files
authored
Merge pull request #1 from RT-Thread/master
update
2 parents 9cd3897 + a559081 commit 1526386

File tree

90 files changed

+12603
-24140
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+12603
-24140
lines changed

bsp/nrf5x/libraries/drivers/drv_uart.c

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,10 @@ static rt_err_t _uart_ctrl(struct rt_serial_device *serial, int cmd, void *arg)
165165

166166
return RT_EOK;
167167
}
168-
168+
RT_WEAK int uart_putc_hook(rt_uint8_t *ch)
169+
{
170+
return -1;
171+
}
169172
static int _uart_putc(struct rt_serial_device *serial, char c)
170173
{
171174
drv_uart_cfg_t *instance = NULL;
@@ -180,13 +183,19 @@ static int _uart_putc(struct rt_serial_device *serial, char c)
180183
nrf_uart_event_clear(instance->uart.p_reg, NRF_UART_EVENT_TXDRDY);
181184
nrf_uart_task_trigger(instance->uart.p_reg, NRF_UART_TASK_STARTTX);
182185
nrf_uart_txd_set(instance->uart.p_reg, (uint8_t)c);
186+
uart_putc_hook((rt_uint8_t *)&c);
183187
while (!nrf_uart_event_check(instance->uart.p_reg, NRF_UART_EVENT_TXDRDY))
184188
{
185189
//wait for TXD send
186190
}
187191
return rtn;
188192
}
189193

194+
RT_WEAK int uart_getc_hook(rt_uint8_t *ch)
195+
{
196+
return -1;
197+
};
198+
190199
static int _uart_getc(struct rt_serial_device *serial)
191200
{
192201
int ch = -1;
@@ -202,7 +211,22 @@ static int _uart_getc(struct rt_serial_device *serial)
202211
ch = instance->rx_byte;
203212
instance->rx_length--;
204213
}
205-
return ch;
214+
215+
if (-1 != ch)
216+
{
217+
return ch;
218+
}
219+
else
220+
{
221+
if (-1 == uart_getc_hook((rt_uint8_t *)&ch))
222+
{
223+
return -1;
224+
}
225+
else
226+
{
227+
return ch;
228+
}
229+
}
206230
}
207231

208232
static struct rt_uart_ops _uart_ops = {

bsp/raspberry-pi/raspi4-32/.config

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,23 @@ CONFIG_DFS_FILESYSTEMS_MAX=2
112112
CONFIG_DFS_FILESYSTEM_TYPES_MAX=2
113113
CONFIG_DFS_FD_MAX=16
114114
# CONFIG_RT_USING_DFS_MNTTABLE is not set
115-
# CONFIG_RT_USING_DFS_ELMFAT is not set
115+
CONFIG_RT_USING_DFS_ELMFAT=y
116+
117+
#
118+
# elm-chan's FatFs, Generic FAT Filesystem Module
119+
#
120+
CONFIG_RT_DFS_ELM_CODE_PAGE=437
121+
CONFIG_RT_DFS_ELM_WORD_ACCESS=y
122+
# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set
123+
# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set
124+
# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set
125+
CONFIG_RT_DFS_ELM_USE_LFN_3=y
126+
CONFIG_RT_DFS_ELM_USE_LFN=3
127+
CONFIG_RT_DFS_ELM_MAX_LFN=255
128+
CONFIG_RT_DFS_ELM_DRIVES=2
129+
CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512
130+
# CONFIG_RT_DFS_ELM_USE_ERASE is not set
131+
CONFIG_RT_DFS_ELM_REENTRANT=y
116132
CONFIG_RT_USING_DFS_DEVFS=y
117133
# CONFIG_RT_USING_DFS_ROMFS is not set
118134
# CONFIG_RT_USING_DFS_RAMFS is not set
@@ -140,14 +156,20 @@ CONFIG_RT_USING_PIN=y
140156
# CONFIG_RT_USING_MTD_NAND is not set
141157
# CONFIG_RT_USING_PM is not set
142158
# CONFIG_RT_USING_RTC is not set
143-
# CONFIG_RT_USING_SDIO is not set
159+
CONFIG_RT_USING_SDIO=y
160+
CONFIG_RT_SDIO_STACK_SIZE=512
161+
CONFIG_RT_SDIO_THREAD_PRIORITY=15
162+
CONFIG_RT_MMCSD_STACK_SIZE=1024
163+
CONFIG_RT_MMCSD_THREAD_PREORITY=22
164+
CONFIG_RT_MMCSD_MAX_PARTITION=16
165+
# CONFIG_RT_SDIO_DEBUG is not set
144166
CONFIG_RT_USING_SPI=y
145167
# CONFIG_RT_USING_QSPI is not set
146168
# CONFIG_RT_USING_SPI_MSD is not set
147169
# CONFIG_RT_USING_SFUD is not set
148170
# CONFIG_RT_USING_ENC28J60 is not set
149171
# CONFIG_RT_USING_SPI_WIFI is not set
150-
# CONFIG_RT_USING_WDT is not set
172+
CONFIG_RT_USING_WDT=y
151173
# CONFIG_RT_USING_AUDIO is not set
152174
# CONFIG_RT_USING_SENSOR is not set
153175
# CONFIG_RT_USING_TOUCH is not set
@@ -170,6 +192,7 @@ CONFIG_RT_USING_LIBC=y
170192
CONFIG_RT_USING_POSIX=y
171193
# CONFIG_RT_USING_POSIX_MMAP is not set
172194
# CONFIG_RT_USING_POSIX_TERMIOS is not set
195+
# CONFIG_RT_USING_POSIX_GETLINE is not set
173196
# CONFIG_RT_USING_POSIX_AIO is not set
174197
# CONFIG_RT_USING_MODULE is not set
175198

@@ -216,7 +239,9 @@ CONFIG_RT_USING_POSIX=y
216239
#
217240
# IoT - internet of things
218241
#
242+
# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
219243
# CONFIG_PKG_USING_PAHOMQTT is not set
244+
# CONFIG_PKG_USING_UMQTT is not set
220245
# CONFIG_PKG_USING_WEBCLIENT is not set
221246
# CONFIG_PKG_USING_WEBNET is not set
222247
# CONFIG_PKG_USING_MONGOOSE is not set
@@ -262,7 +287,7 @@ CONFIG_RT_USING_POSIX=y
262287
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
263288
# CONFIG_PKG_USING_ALI_IOTKIT is not set
264289
# CONFIG_PKG_USING_AZURE is not set
265-
# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
290+
# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
266291
# CONFIG_PKG_USING_JIOT-C-SDK is not set
267292
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
268293
# CONFIG_PKG_USING_JOYLINK is not set
@@ -284,6 +309,10 @@ CONFIG_RT_USING_POSIX=y
284309
# CONFIG_PKG_USING_CAPNP is not set
285310
# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
286311
# CONFIG_PKG_USING_AGILE_TELNET is not set
312+
# CONFIG_PKG_USING_NMEALIB is not set
313+
# CONFIG_PKG_USING_AGILE_JSMN is not set
314+
# CONFIG_PKG_USING_PDULIB is not set
315+
# CONFIG_PKG_USING_BTSTACK is not set
287316

288317
#
289318
# security packages
@@ -292,6 +321,7 @@ CONFIG_RT_USING_POSIX=y
292321
# CONFIG_PKG_USING_libsodium is not set
293322
# CONFIG_PKG_USING_TINYCRYPT is not set
294323
# CONFIG_PKG_USING_TFM is not set
324+
# CONFIG_PKG_USING_YD_CRYPTO is not set
295325

296326
#
297327
# language packages
@@ -308,6 +338,7 @@ CONFIG_RT_USING_POSIX=y
308338
# CONFIG_PKG_USING_STEMWIN is not set
309339
# CONFIG_PKG_USING_WAVPLAYER is not set
310340
# CONFIG_PKG_USING_TJPGD is not set
341+
# CONFIG_PKG_USING_HELIX is not set
311342

312343
#
313344
# tools packages
@@ -326,7 +357,9 @@ CONFIG_RT_USING_POSIX=y
326357
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
327358
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
328359
# CONFIG_PKG_USING_BS8116A is not set
360+
# CONFIG_PKG_USING_GPS_RMC is not set
329361
# CONFIG_PKG_USING_URLENCODE is not set
362+
# CONFIG_PKG_USING_UMCN is not set
330363

331364
#
332365
# system packages
@@ -337,6 +370,7 @@ CONFIG_RT_USING_POSIX=y
337370
# CONFIG_PKG_USING_LWEXT4 is not set
338371
# CONFIG_PKG_USING_PARTITION is not set
339372
# CONFIG_PKG_USING_FAL is not set
373+
# CONFIG_PKG_USING_FLASHDB is not set
340374
# CONFIG_PKG_USING_SQLITE is not set
341375
# CONFIG_PKG_USING_RTI is not set
342376
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
@@ -349,6 +383,11 @@ CONFIG_RT_USING_POSIX=y
349383
# CONFIG_PKG_USING_SYSWATCH is not set
350384
# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
351385
# CONFIG_PKG_USING_PLCCORE is not set
386+
# CONFIG_PKG_USING_RAMDISK is not set
387+
# CONFIG_PKG_USING_MININI is not set
388+
# CONFIG_PKG_USING_QBOOT is not set
389+
# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
390+
# CONFIG_PKG_USING_PPOOL is not set
352391

353392
#
354393
# peripheral libraries and drivers
@@ -386,13 +425,23 @@ CONFIG_RT_USING_POSIX=y
386425
# CONFIG_PKG_USING_RPLIDAR is not set
387426
# CONFIG_PKG_USING_AS608 is not set
388427
# CONFIG_PKG_USING_RC522 is not set
428+
# CONFIG_PKG_USING_WS2812B is not set
389429
# CONFIG_PKG_USING_EMBARC_BSP is not set
390430
# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
391431
# CONFIG_PKG_USING_MULTI_RTIMER is not set
392432
# CONFIG_PKG_USING_MAX7219 is not set
393433
# CONFIG_PKG_USING_BEEP is not set
394434
# CONFIG_PKG_USING_EASYBLINK is not set
395435
# CONFIG_PKG_USING_PMS_SERIES is not set
436+
# CONFIG_PKG_USING_CAN_YMODEM is not set
437+
# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
438+
# CONFIG_PKG_USING_QLED is not set
439+
# CONFIG_PKG_USING_PAJ7620 is not set
440+
# CONFIG_PKG_USING_AGILE_CONSOLE is not set
441+
# CONFIG_PKG_USING_LD3320 is not set
442+
# CONFIG_PKG_USING_WK2124 is not set
443+
# CONFIG_PKG_USING_LY68L6400 is not set
444+
# CONFIG_PKG_USING_DM9051 is not set
396445

397446
#
398447
# miscellaneous packages
@@ -429,6 +478,11 @@ CONFIG_RT_USING_POSIX=y
429478
# CONFIG_PKG_USING_VT100 is not set
430479
# CONFIG_PKG_USING_ULAPACK is not set
431480
# CONFIG_PKG_USING_UKAL is not set
481+
# CONFIG_PKG_USING_CRCLIB is not set
482+
# CONFIG_PKG_USING_THREES is not set
483+
# CONFIG_PKG_USING_2048 is not set
484+
# CONFIG_PKG_USING_LWGPS is not set
485+
# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
432486

433487
#
434488
# Privated Packages of RealThread
@@ -461,6 +515,10 @@ CONFIG_RT_USING_POSIX=y
461515
# CONFIG_PKG_USING_ZBAR is not set
462516
# CONFIG_PKG_USING_MCF is not set
463517
# CONFIG_PKG_USING_URPC is not set
518+
# CONFIG_PKG_USING_BSAL is not set
519+
# CONFIG_PKG_USING_DCM is not set
520+
# CONFIG_PKG_USING_EMQ is not set
521+
# CONFIG_PKG_USING_CFGM is not set
464522
CONFIG_BCM2711_SOC=y
465523
# CONFIG_BSP_SUPPORT_FPU is not set
466524

@@ -487,11 +545,13 @@ CONFIG_BSP_USING_SPI0_DEVICE0=y
487545
# CONFIG_BSP_USING_SPI0_DEVICE1 is not set
488546
CONFIG_BSP_USING_CORETIMER=y
489547
# CONFIG_BSP_USING_SYSTIMER is not set
490-
# CONFIG_BSP_USING_WDT is not set
548+
CONFIG_BSP_USING_WDT=y
491549
# CONFIG_BSP_USING_RTC is not set
492-
# CONFIG_BSP_USING_SDIO is not set
550+
CONFIG_BSP_USING_SDIO=y
551+
CONFIG_BSP_USING_SDIO0=y
493552

494553
#
495554
# Board Peripheral Drivers
496555
#
497-
# CONFIG_BSP_USING_HDMI is not set
556+
CONFIG_BSP_USING_HDMI=y
557+
CONFIG_BSP_USING_HDMI_DISPLAY=y

bsp/raspberry-pi/raspi4-32/README.md

Lines changed: 83 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,45 +20,99 @@ scons
2020
来编译这个板级支持包。如果编译正确无误,会产生rtthread.elf、kernel7.img文件。
2121

2222

23-
## 3. 执行
23+
## 3. 环境搭建
24+
### 3.1 准备好串口线
2425

25-
### 3.1 下载**Raspberry Pi Imager**,生成可以运行的raspbian SD卡
26+
目前版本是使用raspi4的 GPIO 14, GPIO 15来作路口输出,连线情况如下图所示:
2627

27-
首先下载镜像
28+
![raspi2](../raspi3-32/figures/raspberrypi-console.png)
2829

29-
* [Raspberry Pi Imager for Ubuntu](https://downloads.raspberrypi.org/imager/imager_amd64.deb)
30-
* [Raspberry Pi Imager for Windows](https://downloads.raspberrypi.org/imager/imager.exe)
31-
* [Raspberry Pi Imager for macOS](https://downloads.raspberrypi.org/imager/imager.dmg)
30+
串口参数: 115200 8N1 ,硬件和软件流控为关。
3231

33-
### 3.2 准备好串口线
32+
### 3.2 RTT固件放在SD卡运行
3433

35-
目前版本是使用raspi4的 GPIO 14, GPIO 15来作路口输出,连线情况如下图所示:
34+
首先需要准备一张空的32GB以下的SD卡,如果不想自己制作启动固件,可以直接从百度网盘上下载boot的固件。
3635

37-
![raspi2](../raspi3-32/figures/raspberrypi-console.png)
36+
```
37+
链接:https://pan.baidu.com/s/1PxgvXAChUIOgueNXhgMs8w
38+
提取码:pioj
39+
```
3840

39-
串口参数: 115200 8N1 ,硬件和软件流控为关。
41+
解压后将sd目录下的文件拷贝到sd卡即可。以后每次编译后,将生成的kernel7.img进行替换即可。上电后可以看到程序正常运行。
42+
43+
### 3.3 RTT程序用uboot加载
4044

41-
### 3.3 程序下载
45+
为了调试方便,已经将uboot引导程序放入uboot目录下,直接将这些文件放到sd卡中即可。
4246

43-
当编译生成了rtthread.bin文件后,我们可以将该文件放到sd卡上,并修改sd卡中的`config.txt`文件如下:
47+
需要注意的以下步骤:
48+
49+
**1.电脑上启动tftp服务器**
50+
51+
windows系统电脑上可以安装tftpd搭建tftp服务器。将目录指定到`bsp\raspberry-pi\raspi4-32`
52+
53+
**2.修改设置uboot**
54+
55+
在控制台输入下列命令:
4456

4557
```
46-
enable_uart=1
47-
arm_64bit=0
48-
kernel_addr=0x8000
49-
kernel=kernel7.img
50-
core_freq=250
58+
setenv bootcmd "dhcp 0x00200000 x.x.x.x:kernel7.img;dcache flush;go 0x00200000"
59+
saveenv
60+
reset
5161
```
5262

53-
按上面的方法做好SD卡后,插入树莓派4,通电可以在串口上看到如下所示的输出信息:
63+
其中`x.x.x.x`为tftp服务器的pc的ip地址。
5464

55-
```text
56-
heap: 0x00044270 - 0x04044270
65+
**3.修改链接脚本**
66+
67+
将树莓派`bsp\raspberry-pi\raspi4-32\link.ld`的文件链接地址改为`0x200000`
68+
69+
```
70+
SECTIONS
71+
{
72+
. = 0x8000;
73+
. = ALIGN(4096);
74+
.
75+
.
76+
.
77+
}
78+
```
79+
80+
改为
81+
82+
```
83+
SECTIONS
84+
{
85+
. = 0x200000;
86+
. = ALIGN(4096);
87+
.
88+
.
89+
.
90+
}
91+
```
92+
93+
重新编译程序:
94+
95+
```
96+
scons -c
97+
scons
98+
```
99+
100+
**3.插入网线**
101+
102+
上述准备完成后,将网线插入,保证开发板和tftp服务器在同一个网段的路由器上。上电后uboot可以自动从tftp服务器上获取固件,然后开始执行了。
103+
104+
完成后可以看到串口的输出信息
105+
106+
```
107+
heap: 0x000607e8 - 0x040607e8
57108
58109
\ | /
59110
- RT - Thread Operating System
60-
/ | \ 4.0.3 build May 25 2020
111+
/ | \ 4.0.3 build Oct 27 2020
61112
2006 - 2020 Copyright by rt-thread team
113+
[I/SDIO] SD card capacity 31205376 KB.
114+
found part[0], begin: 1048576, size: 29.777GB
115+
file system initialization done!
62116
Hi, this is RT-Thread!!
63117
msh />
64118
```
@@ -71,8 +125,15 @@ msh />
71125
| GPIO | 支持 | - |
72126
| SPI | 支持 | SPI0 |
73127
| MAILBOX | 支持 | - |
128+
| WATCHDOG | 支持 | - |
129+
| HDMI | 支持 | - |
130+
| SDIO | 支持 | - |
131+
132+
## 5. 注意事项
133+
134+
目前rt-thread程序可以使用的内存在100MB以内,可以通过调整`board.c``platform_mem_desc`表的数据进行相关内存的映射以及修改`board.h`来确定程序使用的堆栈大小。目前在地址`0x08000000`处的1M空间被映射成非cache区供树莓派4的CPU与GPU通信的消息管道。若需要扩大系统内存使用,可自行修改代码进行调整。
74135

75-
## 5. 联系人信息
136+
## 6. 联系人信息
76137

77138
维护人:[bernard][5]
78139

0 commit comments

Comments
 (0)