查看HC32的源代码
←
HC32
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== Toolchain == === Compier === * toolchain/gcc-arm-none-eabi/bin/ ** arm-none-eabi-gcc ** arm-none-eabi-g++ ** arm-none-eabi-gdb * toolchain/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/ ** libc.a ** libstdc++.a ** libm.a <br> === Debug === 查看生成的变量地址: <source lang=bash> $ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-nm -n build/main.elf | grep k 00000108 T _Z15key_irq_handlerv 00000190 T SystemCoreClockUpdate 000001a0 T systick_init 00000368 W _sbrk 000003a0 T _kill 000003d0 T _lseek 000003f0 T _link 00000958 T Sysctrl_GetHClkFreq 00000a78 T Sysctrl_GetPClkFreq 00000b2c T SysTick_Handler 0000144c T _sbrk_r 00001470 T __malloc_lock 00001472 T __malloc_unlock 00001498 t .udivsi3_skip_div0_test 000015ac t .divsi3_skip_div0_test 20000000 D SystemCoreClock 20000004 d _tx_ok 20000094 B k 200001a8 b secTicks 200001b0 B __malloc_sbrk_start 200001b4 B msTicks_cnt 200001b8 B msTicks 200005c0 ? stack 20001c00 A __StackLimit 20002000 A __stack 20002000 B __StackTop </source> 查看 .data .bss 段大小: <source lang=bash> $ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf text data bss dec hex filename 9740 124 324 10188 27cc build/main.elf set the global var 'int k = 0': $ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf text data bss dec hex filename 9760 120 328 10208 27e0 build/main.elf </source> * .data:初始值存储在 Flash 中,启动时复制到 RAM * .bss:只需要记录大小信息,不需要在 Flash 中存储 0 值。(Block Started by Symbol)段存放: ** '''未初始化'''的'''全局变量''' ** '''未初始化'''的静态变量 ** '''初始化为 0''' 的变量(包括静态变量) <source lang=bash> FLASH 存储器: +---------------+ | .text (代码) | +---------------+ | .rodata (常量)| +---------------+ | .data (初始值)| +---------------+ | ... | +---------------+ RAM 存储器: +---------------+ | .data (副本) | ← 从 Flash 复制过来 +---------------+ | .bss | ← 启动时清零 +---------------+ | 堆 (heap) | +---------------+ | 栈 (stack) | +---------------+ </source> <br> === Uploader === ==== J-Link ==== 从 https://github.com/hdscmcu/pack 获取 HDSC.HC32L130.1.0.1.pack,这是个 zip 包,改名为 L130.zip 后 unzip 解压: <source lang=bash> $ find . ./Device/Include/HC32L130E8PA.h ./Device/Include/HC32L130F8UA.h ./Device/Include/HC32L130J8TA.h ./Device/Include/system_hc32l130.h ./Device/Source/ARM/startup_hc32l130.s ./Device/Source/main.c ./Device/Source/system_hc32l130.c ./Flash/FlashHC32L130_64K.FLM ./HDSC.HC32L130.pdsc # XML 描述文件 ./SVD/HC32L130E8PA.sfr ./SVD/HC32L130F8UA.sfr ./SVD/HC32L130J8TA.sfr </source> 将 FlashHC32L130_64K.FLM 改名为 HC32L130_64K.FLM,放在: <source lang=bash> $ find /c/Program\ Files\ \(x86\)/SEGGER/JLink/Devices/HDSC/ /c/Program Files (x86)/SEGGER/JLink/Devices/HDSC/HC32L130_64K.FLM </source> /c/Program\ Files\ \(x86\)/SEGGER/JLink/JLinkDevices.xml 增加: <source lang=xml> <!-- Huada (HDSC) --> <Device> <ChipInfo Vendor="HDSC" Name="HC32L110x4" WorkRAMAddr="0x20000000" WorkRAMSize="0x800" Core="JLINK_CORE_CORTEX_M0"/> <FlashBankInfo Name="Flash_16K" BaseAddr="0x0" MaxSize="0x4000" Loader="Devices/HDSC/HC32L110B4_C4.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/> </Device> <Device> <ChipInfo Vendor="HDSC" Name="HC32L110x6" WorkRAMAddr="0x20000000" WorkRAMSize="0x1000" Core="JLINK_CORE_CORTEX_M0"/> <FlashBankInfo Name="Flash_32K" BaseAddr="0x0" MaxSize="0x8000" Loader="Devices/HDSC/HC32L110B6_C6.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/> </Device> <Device> <ChipInfo Vendor="HDSC" Name="HC32L130" WorkRAMAddr="0x20000000" WorkRAMSize="0x2000" Core="JLINK_CORE_CORTEX_M0"/> <FlashBankInfo Name="Flash_64K" BaseAddr="0x0" MaxSize="0x10000" Loader="Devices/HDSC/HC32L130_64K.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/> </Device> </source> 则可使用 J-Flash 烧写: * MCU 选 HC32L130,SWD 4000KHz * Target -> Connect * Target -> Production Programming(快捷键 F7) * Target -> Manual Programming -> Start Application(快捷键 F9) JLink 命令行方式: <source lang=bash> $ cat ../../toolchain/jlink-flash.cmd erase loadfile build/main.hex r exit $ /c/SEGGER/JLink/JLink.exe -device HC32L130 -if swd -speed 4000 -CommanderScript ../../toolchain/jlink-flash.cmd SEGGER J-Link Commander V6.72c (Compiled May 8 2020 17:22:54) DLL version V6.72c, compiled May 8 2020 17:21:59 J-Link Command File read successfully. Processing script file... J-Link connection not established yet but required for command. Connecting to J-Link via USB...O.K. Firmware: J-Link V9 compiled Dec 13 2019 11:14:50 Hardware version: V9.30 S/N: 36310083 License(s): RDI, GDB, FlashDL, FlashBP, JFlash VTref=3.300V Target connection not established yet but required for command. Device "HC32L130" selected. Connecting to target via SWD Found SW-DP with ID 0x0BC11477 Unknown DP version. Assuming DPv0 Scanning AP map to find all available APs AP[1]: Stopped AP scan as end of AP map has been reached AP[0]: AHB-AP (IDR: 0x04770031) Iterating through AP map to find AHB-AP to use AP[0]: Core found AP[0]: AHB-AP ROM base: 0xE00FF000 CPUID register: 0x410CC601. Implementer code: 0x41 (ARM) Found Cortex-M0 r0p1, Little endian. FPUnit: 4 code (BP) slots and 0 literal slots CoreSight components: ROMTbl[0] @ E00FF000 ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB Cortex-M0 identified. Erasing device... J-Link: Flash download: Total time needed: 0.189s (Prepare: 0.110s, Compare: 0.000s, Erase: 0.075s, Program: 0.000s, Verify: 0.000s, Restore: 0.003s) Erasing done. Downloading file [build/main.hex]... J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (10752 bytes) J-Link: Flash download: Total time needed: 1.095s (Prepare: 0.017s, Compare: 0.134s, Erase: 0.299s, Program: 0.570s, Verify: 0.060s, Restore: 0.012s) O.K. Reset delay: 0 ms Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Reset: Halt core after reset via DEMCR.VC_CORERESET. Reset: Reset device via AIRCR.SYSRESETREQ. Script processing completed. </source> 或者: <source lang=bash> $ cat up.cmd device HC32L130 si SWD speed 4000 connect erase loadfile build/main.hex r exit $ /c/SEGGER/JLink/JLink.exe -CommanderScript ./up.cmd </source> <br> ==== UART ==== * https://github.com/kicer/hc32flash <br> ==== STLINK ==== * [http://www.51hei.com/bbs/dpj-194723-1.html pyOCD] * https://www.cnblogs.com/milton/p/16586831.html * https://github.com/IOsetting/hc32l110-template * https://gitcode.com/open-source-toolkit/8cb1a <br> === Linker Script === <source lang=python> MEMORY { FLASH ( rx ) : ORIGIN = 0x00000000, LENGTH = 64K RAM ( rxw ) : ORIGIN = 0x20000000, LENGTH = 8K } </source> .vectors (Vector Table) 位于 Flash 开始处,Flash 上代码段 .text 之前: <source lang=python> ENTRY(Reset_Handler) SECTIONS { .text : { KEEP(*(.vectors)) __Vectors_End = .; __Vectors_Size = __Vectors_End - __Vectors; __end__ = .; ...... ...... </source> arch/hc32/common/startup_hc32l13x.c: <source lang=c> /*---------------------------------------------------------------------------- Exception / Interrupt Vector table *----------------------------------------------------------------------------*/ const pFunc __Vectors[] __attribute__ ((section(".vectors"))) = { /* Cortex-M Exception Handlers */ (pFunc)&__StackTop, /* Initial Stack Pointer */ Reset_Handler, /* Reset Handler */ ...... ...... </source> <br>
返回到
HC32
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面