无刷电机小车开发记录02——BSP导入RT-ThreadStudio

前情提要


上一篇文章记录了一下如何创建GD32E503的BSP。但由于时间关系只实现了MDK版本的工程模板,后面如果需要提交BSP时再去补全IAR版本的。但对于我个人而言,IAR只在读书时玩蓝牙开发的时候用过,而MDK虽然用的比较多但最近几年也很少用了。感觉还是VSCode等编辑器用起来更舒服一些,而对于RTT系统的开发,我个人还是更倾向于使用官方的RTThreadStudioIDE进行开发。于是今天想想办法怎么移到RTTStudio上去。


面临的问题


  1. 上篇文章已经发现,目前官方的固件库竟然没有GCC版本的启动文件,所以要想办法弄个启动文件

  2. RTTStudio自带的GCC编译器版本太老,不支持编译M33内核,所以要升级GCC

  3. 计划用开源的DAP调试器进行调试,但同样RTTStudio自带的pyocd调试工具版本太老,需要升级

添加GCC版本的启动文件


拷贝启动文件模板

从GD32F4xx固件包内把GCC文件夹拷贝到新添加的GDE50x固件包的对应位置,并把汇编文件名称修改为gd32e50x的,注意,GD32E50x分了高密度版(hd)和互联版(cl),我这里暂且只修改了一份我用到的高密度版本的。cl版本的也类似修改即可。

修改启动文件

众所周知,汇编的启动文件要干的事情就是做一些芯片启动的前期初始化工作,搭建C代码的运行环境。所以这里也并不需要对照汇编指令,把每条语句的功能都搞明白,只需大致了解一下即可。一眼望去,感觉这个汇编文件主要做了三大事情。

第一,定义中断向量;

第二,定义启动入口;

第三,声明中断函数。

而启动入口相关的不用修改,都是先调用SystemInit函数做一些时钟等基础初始化,然后再调用entry或者main函数执行后续的代码。

所以这里主要修改的就是中断向量的定义和中断函数的声明,按照armcc版本的进行修改即可:

1; * Copyright (c) 2006-2021, RT-Thread Development Team
2; *
3; * SPDX-License-Identifier: Apache-2.0
4; *
5; * Change Logs:
6; * Date           Author       Notes
7; * 2018-05-22     tanek        first implementation
8; */
9.syntax unified
10.cpu cortex-m33
11.fpu softvfp
12.thumb
13.global  g_pfnVectors
14.global  Default_Handler
15    .section  .isr_vector,"a",%progbits
16    .type  g_pfnVectors, %object
17g_pfnVectors:
18    .word     _estack                       // Top of Stack
19    .word     Reset_Handler                     // Reset Handler
20    .word     NMI_Handler                       // NMI Handler
21    .word     HardFault_Handler                 // Hard Fault Handler
22    .word     MemManage_Handler                 // MPU Fault Handler
23    .word     BusFault_Handler                  // Bus Fault Handler
24    .word     UsageFault_Handler                // Usage Fault Handler
25    .word     0                                 // Reserved
26    .word     0                                 // Reserved
27    .word     0                                 // Reserved
28    .word     0                                 // Reserved
29    .word     SVC_Handler                       // SVCall Handler
30    .word     DebugMon_Handler                  // Debug Monitor Handler
31    .word     0                                 // Reserved
32    .word     PendSV_Handler                    // PendSV Handler
33    .word     SysTick_Handler                   // SysTick Handler
34    // external interrupts handler
35    .word     WWDGT_IRQHandler                  // 16:Window Watchdog Timer
36    .word     LVD_IRQHandler                    // 17:LVD through EXTI Line detect
37    .word     TAMPER_IRQHandler                   // 18:Tamper through EXTI Line detect
38    .word     RTC_IRQHandler                           // 19:RTC through EXTI Line
39    .word     FMC_IRQHandler                    // 20:FMC
40    .word     RCU_CTC_IRQHandler                // 21:RCU and CTC
41    .word     EXTI0_IRQHandler                  // 22:EXTI Line 0
42    .word     EXTI1_IRQHandler                  // 23:EXTI Line 1
43    .word     EXTI2_IRQHandler                  // 24:EXTI Line 2
44    .word     EXTI3_IRQHandler                  // 25:EXTI Line 3
45    .word     EXTI4_IRQHandler                  // 26:EXTI Line 4
46    .word     DMA0_Channel0_IRQHandler          // 27:DMA0 Channel0
47    .word     DMA0_Channel1_IRQHandler          // 28:DMA0 Channel1
48    .word     DMA0_Channel2_IRQHandler          // 29:DMA0 Channel2
49    .word     DMA0_Channel3_IRQHandler          // 30:DMA0 Channel3
50    .word     DMA0_Channel4_IRQHandler          // 31:DMA0 Channel4
51    .word     DMA0_Channel5_IRQHandler          // 32:DMA0 Channel5
52    .word     DMA0_Channel6_IRQHandler          // 33:DMA0 Channel6
53    .word     ADC0_1_IRQHandler                 // 34:ADC0 and ADC1
54    .word            USBD_HP_CAN0_TX_IRQHandler                // 35:USBD HP or CAN0 TX
55    .word            USBD_LP_CAN0_RX0_IRQHandler                // 36:USBD LP or CAN0 RX0
56    .word     CAN0_RX1_IRQHandler               // 37:CAN0 RX1
57    .word     CAN0_EWMC_IRQHandler              // 38:CAN0 EWMC
58    .word     EXTI5_9_IRQHandler                // 39:EXTI5 to EXTI9
59    .word     TIMER0_BRK_TIMER8_IRQHandler      // 40:TIMER0 Break and TIMER8
60    .word     TIMER0_UP_TIMER9_IRQHandler       // 41:TIMER0 Update and TIMER9
61    .word     TIMER0_TRG_CMT_TIMER10_IRQHandler // 42:TIMER0 Trigger and Commutation and TIMER10
62    .word     TIMER0_Channel_IRQHandler         // 43:TIMER0 Channel Capture Compare
63    .word     TIMER1_IRQHandler                 // 44:TIMER1
64    .word     TIMER2_IRQHandler                 // 45:TIMER2
65    .word     TIMER3_IRQHandler                 // 46:TIMER3
66    .word     I2C0_EV_IRQHandler                // 47:I2C0 Event
67    .word     I2C0_ER_IRQHandler                // 48:I2C0 Error
68    .word     I2C1_EV_IRQHandler                // 49:I2C1 Event
69    .word     I2C1_ER_IRQHandler                // 50:I2C1 Error
70    .word     SPI0_IRQHandler                   // 51:SPI0
71    .word     SPI1_I2S1ADD_IRQHandler           // 52:SPI1 or I2S1ADD
72    .word     USART0_IRQHandler                 // 53:USART0
73    .word     USART1_IRQHandler                 // 54:USART1
74    .word     USART2_IRQHandler                 // 55:USART2
75    .word     EXTI10_15_IRQHandler              // 56:EXTI10 to EXTI15
76    .word     RTC_Alarm_IRQHandler              // 57:RTC Alarm
77    .word     USBD_WKUP_IRQHandler                 // 58:USBD Wakeup
78    .word     TIMER7_BRK_TIMER11_IRQHandler     // 59:TIMER7 Break and TIMER11
79    .word     TIMER7_UP_TIMER12_IRQHandler      // 60:TIMER7 Update and TIMER12
80    .word     TIMER7_TRG_CMT_TIMER13_IRQHandler // 61:TIMER7 Trigger and Commutation and TIMER13
81    .word     TIMER7_Channel_IRQHandler         // 62:TIMER7 Channel Compare
82    .word     ADC2_IRQHandler                              // 63:ADC2
83    .word     EXMC_IRQHandler                   // 64:EXMC
84    .word     SDIO_IRQHandler                   // 65:SDIO
85    .word     TIMER4_IRQHandler                 // 66:TIMER4
86    .word     SPI2_I2S2ADD_IRQHandler           // 67:SPI2 or I2S2ADD
87    .word     UART3_IRQHandler                  // 68:UART3
88    .word     UART4_IRQHandler                  // 69:UART4
89    .word     TIMER5_DAC_IRQHandler             // 70:TIMER5 and DAC0 DAC1 Underrun error
90    .word     TIMER6_IRQHandler                 // 71:TIMER6
91    .word     DMA1_Channel0_IRQHandler          // 72:DMA1 Channel0
92    .word     DMA1_Channel1_IRQHandler          // 73:DMA1 Channel1
93    .word     DMA1_Channel2_IRQHandler          // 74:DMA1 Channel2
94    .word     DMA1_Channel3_4_IRQHandler        // 75:DMA1 Channel3 and Channel4
95    .word     0                                                          // 76:Reserved
96    .word     0                                               // 77:Reserved
97    .word     0                                                      // 78:Reserved
98    .word     CAN1_TX_IRQHandler                // 79:CAN1 TX
99    .word     CAN1_RX0_IRQHandler               // 80:CAN1 RX0
100    .word     CAN1_RX1_IRQHandler               // 81:CAN1 RX1
101    .word     CAN1_EWMC_IRQHandler              // 82:CAN1 EWMC 
102    .word     0                                                  // 83:Reserved
103    .word     0                                                          // 84:Reserved
104    .word     SHRTIMER_IRQ2_IRQHandler          // 85:SHRTIMER IRQ2
105    .word     SHRTIMER_IRQ3_IRQHandler          // 86:SHRTIMER IRQ3
106    .word     SHRTIMER_IRQ4_IRQHandler          // 87:SHRTIMER IRQ4
107    .word     SHRTIMER_IRQ5_IRQHandler          // 88:SHRTIMER IRQ5
108    .word     SHRTIMER_IRQ6_IRQHandler          // 89:SHRTIMER IRQ6
109    .word     0                                                          // 90:Reserved
110    .word     0                                                       // 91:Reserved
111    .word     SHRTIMER_IRQ0_IRQHandler          // 92:SHRTIMER IRQ0
112    .word     SHRTIMER_IRQ1_IRQHandler          // 93:SHRTIMER IRQ1
113    .word     0                                                // 94:Reserved
114    .word     0                                 // 95:Reserved
115    .word     0                                               // 96:Reserved
116    .word     0                                                // 97:Reserved
117    .word     I2C2_EV_IRQHandler                // 98:I2C2 Event
118    .word     I2C2_ER_IRQHandler                // 99:I2C2 Error
119    .word     USART5_IRQHandler                 // 100:USART5
120    .word     I2C2_WKUP_IRQHandler              // 101:I2C2 Wakeup
121    .word     USART5_WKUP_IRQHandler            // 102:USART5 Wakeup
122    .word     0                                 // 103:Reserved
123    .size  g_pfnVectors, .-g_pfnVectors
124    .section  .text.Reset_Handler
125    .weak  Reset_Handler
126    .type  Reset_Handler, %function
127Reset_Handler:
128    ldr r1, =_sidata
129    ldr r2, =_sdata
130    ldr r3, =_edata
131    subs r3, r2
132    ble fill_bss_start
133loop_copy_data:
134    subs r3, #4
135    ldr r0, [r1,r3]
136    str r0, [r2,r3]
137    bgt loop_copy_data
138fill_bss_start:
139    ldr r1, =__bss_start
140    ldr r2, =__bss_end
141    movs r0, 0
142    subs r2, r1
143    ble startup_enter
144loop_fill_bss:
145    subs r2, #4
146    str r0, [r1, r2]
147    bgt loop_fill_bss
148startup_enter:
149    bl SystemInit
150    bl entry
151    /* Exception Handlers */
152    .weak   NMI_Handler
153    .type   NMI_Handler, %function
154NMI_Handler:
155    b       .
156    .size   NMI_Handler, . - NMI_Handler
157    .weak   MemManage_Handler
158    .type   MemManage_Handler, %function
159MemManage_Handler:
160    b       .
161    .size   MemManage_Handler, . - MemManage_Handler
162    .weak   BusFault_Handler
163    .type   BusFault_Handler, %function
164BusFault_Handler:
165    b       .
166    .size   BusFault_Handler, . - BusFault_Handler
167    .weak   UsageFault_Handler
168    .type   UsageFault_Handler, %function
169UsageFault_Handler:
170    b       .
171    .size   UsageFault_Handler, . - UsageFault_Handler
172    .weak   SVC_Handler
173    .type   SVC_Handler, %function
174SVC_Handler:
175    b       .
176    .size   SVC_Handler, . - SVC_Handler
177    .weak   DebugMon_Handler
178    .type   DebugMon_Handler, %function
179DebugMon_Handler:
180    b       .
181    .size   DebugMon_Handler, . - DebugMon_Handler
182    .weak   PendSV_Handler
183    .type   PendSV_Handler, %function
184PendSV_Handler:
185    b       .
186    .size   PendSV_Handler, . - PendSV_Handler
187    .weak   SysTick_Handler
188    .type   SysTick_Handler, %function
189SysTick_Handler:
190    b       .
191    .size   SysTick_Handler, . - SysTick_Handler
192    /* IQR Handler */
193    .section  .text.Default_Handler,"ax",%progbits
194    .type  Default_Handler, %function
195Default_Handler:
196    b  .
197    .size  Default_Handler, . - Default_Handler
198    .macro  IRQ handler
199    .weak   \handler
200    .set    \handler, Default_Handler
201    .endm
202    IRQ WWDGT_IRQHandler
203    IRQ LVD_IRQHandler
204    IRQ TAMPER_IRQHandler
205    IRQ RTC_IRQHandler
206    IRQ FMC_IRQHandler
207    IRQ RCU_CTC_IRQHandler
208    IRQ EXTI0_IRQHandler
209    IRQ EXTI1_IRQHandler
210    IRQ EXTI2_IRQHandler
211    IRQ EXTI3_IRQHandler
212    IRQ EXTI4_IRQHandler
213    IRQ DMA0_Channel0_IRQHandler
214    IRQ DMA0_Channel1_IRQHandler
215    IRQ DMA0_Channel2_IRQHandler
216    IRQ DMA0_Channel3_IRQHandler
217    IRQ DMA0_Channel4_IRQHandler
218    IRQ DMA0_Channel5_IRQHandler
219    IRQ DMA0_Channel6_IRQHandler
220    IRQ ADC0_1_IRQHandler
221    IRQ USBD_HP_CAN0_TX_IRQHandler        
222    IRQ USBD_LP_CAN0_RX0_IRQHandler       
223    IRQ CAN0_RX1_IRQHandler               
224    IRQ CAN0_EWMC_IRQHandler              
225    IRQ EXTI5_9_IRQHandler                
226    IRQ TIMER0_BRK_TIMER8_IRQHandler      
227    IRQ TIMER0_UP_TIMER9_IRQHandler       
228    IRQ TIMER0_TRG_CMT_TIMER10_IRQHandler 
229    IRQ TIMER0_Channel_IRQHandler         
230    IRQ TIMER1_IRQHandler                 
231    IRQ TIMER2_IRQHandler                 
232    IRQ TIMER3_IRQHandler                 
233    IRQ I2C0_EV_IRQHandler                
234    IRQ I2C0_ER_IRQHandler                
235    IRQ I2C1_EV_IRQHandler                
236    IRQ I2C1_ER_IRQHandler                
237    IRQ SPI0_IRQHandler                   
238    IRQ SPI1_I2S1ADD_IRQHandler           
239    IRQ USART0_IRQHandler                 
240    IRQ USART1_IRQHandler                 
241    IRQ USART2_IRQHandler                 
242    IRQ EXTI10_15_IRQHandler              
243    IRQ RTC_Alarm_IRQHandler              
244    IRQ USBD_WKUP_IRQHandler              
245    IRQ TIMER7_BRK_TIMER11_IRQHandler     
246    IRQ TIMER7_UP_TIMER12_IRQHandler      
247    IRQ TIMER7_TRG_CMT_TIMER13_IRQHandler 
248    IRQ TIMER7_Channel_IRQHandler         
249    IRQ ADC2_IRQHandler                   
250    IRQ EXMC_IRQHandler                   
251    IRQ SDIO_IRQHandler                   
252    IRQ TIMER4_IRQHandler                 
253    IRQ SPI2_I2S2ADD_IRQHandler           
254    IRQ UART3_IRQHandler                  
255    IRQ UART4_IRQHandler                  
256    IRQ TIMER5_DAC_IRQHandler             
257    IRQ TIMER6_IRQHandler                 
258    IRQ DMA1_Channel0_IRQHandler          
259    IRQ DMA1_Channel1_IRQHandler          
260    IRQ DMA1_Channel2_IRQHandler          
261    IRQ DMA1_Channel3_4_IRQHandler        
262    IRQ CAN1_TX_IRQHandler                
263    IRQ CAN1_RX0_IRQHandler               
264    IRQ CAN1_RX1_IRQHandler               
265    IRQ CAN1_EWMC_IRQHandler              
266    IRQ SHRTIMER_IRQ2_IRQHandler          
267    IRQ SHRTIMER_IRQ3_IRQHandler          
268    IRQ SHRTIMER_IRQ4_IRQHandler          
269    IRQ SHRTIMER_IRQ5_IRQHandler          
270    IRQ SHRTIMER_IRQ6_IRQHandler          
271    IRQ SHRTIMER_IRQ0_IRQHandler          
272    IRQ SHRTIMER_IRQ1_IRQHandler          
273    IRQ I2C2_EV_IRQHandler                
274    IRQ I2C2_ER_IRQHandler                
275    IRQ USART5_IRQHandler                 
276    IRQ I2C2_WKUP_IRQHandler              
277    IRQ USART5_WKUP_IRQHandler


导入RTTStudioIDE


导入工程

有了GCC版本的启动文件,那不妨先用RTTStudio导入一下工程,然后再根据错误想办法解决。点击“文件”菜单内的“导入”图标,打开导入对话框:


选择“RT-Thread Bsp到工作空间中”,然后点击下一步按钮:

根据自己的实际情况填写内容,然后点击“完成按钮”进行导入:

如下是我导入后的项目资源列表,会把所需的内容都拷贝到工程内部:

编译根据错误解决问题

不妨先编译一下工程,发现报了一些错误,这是必然的,因为还有很多操作没做呢。那首当其冲的错误就是如下的GCC不支持m33内核的问题。

1arm-none-eabi-gcc: error: unrecognized argument in option '-mcpu=cortex-m33+nodsp'
2arm-none-eabi-gcc: note: valid arguments to '-mcpu=' are: arm1020e arm1020t arm1022e arm1026ej-s arm10e arm10tdmi arm1136j-s arm1136jf-s arm1156t2-s arm1156t2f-s arm1176jz-s arm1176jzf-s arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm70 arm700 arm700i arm710 arm7100 arm710c arm710t arm720 arm720t arm740t arm7500 arm7500fe arm7d arm7di arm7dm arm7dmi arm7m arm7tdmi arm7tdmi-s arm8 arm810 arm9 arm920 arm920t arm922t arm926ej-s arm940t arm946e-s arm966e-s arm968e-s arm9e arm9tdmi cortex-a12 cortex-a15 cortex-a15.cortex-a7 cortex-a17 cortex-a17.cortex-a7 cortex-a5 cortex-a53 cortex-a57 cortex-a57.cortex-a53 cortex-a7 cortex-a72 cortex-a72.cortex-a53 cortex-a8 cortex-a9 cortex-m0 cortex-m0.small-multiply cortex-m0plus cortex-m0plus.small-multiply cortex-m1 cortex-m1.small-multiply cortex-m3 cortex-m4 cortex-m7 cortex-r4 cortex-r4f cortex-r5 cortex-r7 cortex-r8 ep9312 exynos-m1 fa526 fa606te fa626 fa626te fa726te fmp626 generic-armv7-a iwmmxt iwmmxt2 marvell-pj4 mpcore mpcorenovfp native strongarm strongarm110 strongarm1100 strongarm1110 xgene1 xscale
3make: *** [rt-thread/src/subdir.mk:54: rt-thread/src/clock.o] Error 1

更新GCC

去arm官网,下载最新版本的gcc-arm-none-eabi:

GCC下载地址: https://developer.arm.com/downloads/-/gnu-rm

把解压后的GCC文件夹拷贝到RTTStudio的GCC工具路径内,为了减小点路径长度,可以把文件夹名字重命名为”10.3”:

点击“构建配置”工具图标,打开配置对话框,在“设置”栏的“Toolchains”图页内就可以配置GCC相关信息了。GCC应该是向下兼容的,这里不妨选择”global”进行全局设置:

点击“浏览”按钮,选择刚加入的GCC工具路径,要选择到里面的bin级目录:


添加“cmsis_gcc.h”头文件


点击“应用并关闭”按钮,完成修改,再次编译,发现之前不支持M33内核的错误不见了。不过错误反而变多了😅,也很正常,因为之前就没进行到GCC编译这一步,很多错误自然出现不了,不用着急,先看第一个错误:

1D:\RT-ThreadStudio\workspace\FOC_MiniCar\libraries\GD32E50x_Firmware_Library\CMSIS/cmsis_compiler.h:54:12: fatal error: cmsis_gcc.h: No such file or directory
2   54 |   #include "cmsis_gcc.h"

报的是固件库缺少“cmsis_gcc.h”文件。也对,官方固件并没有做GCC的支持,怎么会有这个头文件呢。那继续从其它固件那里拷贝一份到当前工程内即可,当然为了之前做的BSP的完整性,也可以同时往其对应位置拷贝一份:

再次编译,呕吼!错误更多了,依然不急,先看第一个错误:

1D:\RT-ThreadStudio\workspace\FOC_MiniCar\libraries\GD32E50x_Firmware_Library\CMSIS/core_cm33.h:2668:10: fatal error: mpu_armv8.h: No such file or directory
2 2668 | #include "mpu_armv8.h"

提示找不到”mpu_armv8.h”头文件。这里比较奇怪,m33内核确实属于armv8架构,但官方固件库内却找不到此头文件,倒是在其它的BSP内搜到了此头文件,于是随便拷贝一个到工程内即可,比如我是从瑞萨的一个BSP内拷贝的。当然,这里也可以关掉mpu的配置宏,不用mpu。

于是再次进行编译,就会发现编译通过了:



更新pyocd


那不妨下载一下试试,不出意外自然会出现意外,果真不能正常下载。原因就是最开始提到的自带的pyocd版本太老了,不支持GD32E503RC的器件。需要更新pyocd:

打开CMD命令窗口,运行如下命令,安装新的pyocd:

等待安装完毕,就可以在python的安装路径下找到新的”pyocd.exe”

在终端输入“pyocd -V”命令,可查看到新安装pyocd的版本。还可以输入“pyocd list —targets”命令查看目前pyocd支持的器件。

最后会发现,默认并不支持兆易创新的器件,所以,还需要自己添加支持包:

安装完后,再查看安装包和支持的器件,就能找到GD32了:

最后再修改一些RTTStudio的工程配置,选择先安装的pyocd.exe和pyocd-gdbserver.exe:

然后再尝试一些烧写,就可以正常下载甚至调试程序了:


相关链接


本系列首篇文章链接:

https://club.rt-thread.org/ask/article/5c0c4ba7eb4ab1ad.html


———————End——————




👇 点击阅读原文进入官网

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 53浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 41浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 221浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 390浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 150浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 122浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 112浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 164浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 182浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 100浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 186浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦