5wk金沙登录网址并不能完成stm32的编译工作

当前位置:5wk金沙官网 > 5wk金沙登录网址 > 5wk金沙登录网址并不能完成stm32的编译工作
作者: 5wk金沙官网|来源: http://www.mubasherkhan.com|栏目:5wk金沙登录网址

文章关键词:5wk金沙官网,精简开发板

  步骤一步来,别想一口吃成胖子,给自己定计划。多看源码以及编译日志,多想,多动手。源码既是文档,别想着百度或者谷歌能帮你直接解决问题。修改完代码后,完成了小部分功能的,也要及时提交GIT中。

  首先按移植LiteOS教程里的说明,使用CubeMX工具生成makefile格式的项目(包含stm32l4xx标准hal库和ll库实现代码及makefile),并把项目文件复制到供应商/st/stm32l4xx目录里。这就是2020-11-06日dbbaf5f这个提交所包含的内容。然后在该目录执行命令make>

  build.log,这样一是测试代码是否能正常编译,二是可以把stm官方提供的makefile实际执行指令信息存储到build.log文件里,方便以后修改gn系统的编译配置时做参考用

  根据以前的阅读makefile和嵌入式开发经验,应该先确定编译工具链。不同的硬件架构,需要的编译工具链并不一样,哪怕是一个最简单的helloworld,5wk金沙登录网址也没办法实现同一个bin文件,能在不同架构的硬件上直接运行。目前鸿蒙2.0配置好的两套编译工具(主要是gcc),并不能完成stm32的编译工作。

  prefix设置为正确的gcc工具设置为arm-none-eabi。其他内容暂时没动,然后根据其他开发板的设置,又复制了几遍配置,例如

  等等配置先抄一遍hi3861的,期间各种尝试使用编译命令蟒蛇build.pystm32l476rg_nucleo,直到不再提示找不到stm32l476rg_nucleo目标板,进入下一个确认工具链环节为止。这一环节中,比较重要的应该是build/lite/product/stm32l476rg_nucleo.json文件,该文件定义了目标板名称,编译工具链,内核等重要信息。

  当编译命令提示arm-none-eabi-gcc不是OHOS的编译器时,我也没有楞一会儿。翻了生成目录下的各种配置也找不到对应的配置时,我就放弃找配置了。直接在VScode中插入搜索不包含OHOS编译器的大部分文件,最终在build/lite/config中。py的124行和158行找到了对应的判断语句,并增加了arm-none-eabi-gcc的判断语句。

  随后测试编译时,又发现编译脚本会针对ohos_kernel_type进行各种优化和设置。没办法,就只能搜索ohos_kernel_type==“liteos_riscv”,指向文件一一修改。涉及到的文件也很多,详细请看gitee上的变更记录。

  最终各组件的配置判断语句没问题了,能顺利进入到编译状态,出现类似以下信息了

  因此能出现[1/112]之类的,恭喜你,编译配置已经完成了80%了。期间还删除并容易出现问题的组件,例如wifi功能等等一堆组件

  为了减少以后找文件找目录头疼,我在二进制目录新建了一个包括文件夹,链接疑似应该从厂商目录中提取出来的头文件放在该目录的hal目录下,从而难以解决的头文件错误组件去掉,不编译对应组件。最终编译命令都顺利通过了,只差最后一步生成小精灵和箱文件了。

  断言(已定义(invoker.cxx),“gcc工具链必须指定一个“cxx”值“)

  断言(已定义(invoker.ld),“gcc工具链必须指定一个“ld”值“)

  断言(已定义(invoker.ar),“gcc工具链必须指定一个“ar”值“)

  断言(定义(invoker.as),““工具链必须指定一个”as“值”)

  断言(定义(invoker.cp),““工具链必须指定一个“cp”值”)

  最终,顺利生成了一个elf文件,bin文件以及hex文件。其实gn配置相对来说,命令行的提示,以及配置的定位性都是相当不错的。还是建议大家多动手,多看,多想。

  原文标题:移植鸿蒙系统到STM32L476RG_NUCLEO开发板的一点小经验

  文章出处:【微信公众号:HarmonyOS社区】欢迎添加关注!文章转载请注明出处。

  原文标题:移植鸿蒙系统到STM32L476RG_NUCLEO开发板的一点小经验

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!