-
stm32l476移植鸿蒙系统求助
[i=s] 本帖最后由 walker2048 于 2020-12-15 10:17 编辑 [/i] [align=left][align=left]本人菜**一只,尝试着移植鸿蒙2.0系统到stm32l476rg_nucleo开发板。现在碰到一些问题,想问下论坛里的大佬是否可以给点提示,非常感谢。[/align][align=left]环境配置描述:[/align][align=left]目前已完成至设置好clang+gcc工具链(最后ld时使用arm-none-eabi-gcc)配置,编译参数根据cubeMX生成的makefile文件修改好了。该工具链与编译参数使用在cubeMX生成的标准程序里可正常运行(点灯OK,延时500毫秒OK,printf重定向串口输出OK)。[/align][align=left]---------------------------[/align][align=left]参数设置如下[/align][align=left]defines = -DUSE_HAL_DRIVER -DSTM32L476xx[/align][align=left]asmflags = -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard[/align][align=left]# -fshort-enums -target arm-none-eabi 这两个参数是clang用的[/align][align=left]cflags = -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fshort-enums -target arm-none-eabi -fPIC[/align][align=left]cflags_c = -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2[/align][align=left]ldflags = -T ../../vendor/st/board/stm32l476rg/STM32L476RGTx_FLASH.ld -lc -lm -lnosys -specs=nano.specs -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2[/align][align=left]---------------------------[/align][align=left]问题描述如下,mcu的时钟定义设置为最高速80M,在cubeMX生成的标准程序里(不管是gcc编译或者clang编译),SystemCoreClock可顺利更新为80M,程序正常。但是在移植到鸿蒙的代码中,HAL库无法更新SystemCoreClock变量,不管是如何修改cubeMX的时钟定义(降频改配置,修改UART2时钟信号源),均无法正常运行点灯与串口输出功能,HAL_Delay功能也出错。目前判断是只要使用到SystemCoreClock变量的,都会出错。自己在单步调试中将SystemCoreClock变量赋值为80M,也无法正常运行程序。[/align][align=left]--------------------------[/align][align=left]想求助一下论坛里的大佬,是否能帮忙看一下到底是什么地方有问题。[/align][align=left]源码地址附上:https://gitee.com/walker2048/hmos_iot,请切换到clang_stm32分支。[/align][align=left]编译时需要LLVM,arm-none-eabi-gcc,gn,ninja工具,以及python3.7以上环境。Debug时需要Openocd和arm-none-eabi-gdb。[/align][align=left]编译命令为python build.py stm32l476rg_nucleo(在源码根目录执行)。[/align][align=left]如果大家懒得搭编译环境,可以使用我创建好的Docker镜像(arm-none-eabi-gcc工具链需要自行下载配置)[/align][align=left]镜像运行命令:docker run -it --name build -v "D:/hmos_iot":"/mnt" walker2048/hm_build:slim_iot[/align][/align]
13391浏览量 12回复量 关注量