完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 jf_63540249 于 2022-1-20 15:28 编辑 在学习YoC平台的过程中,把我对组件化编译和开发的学习做了简单记录和总结,初步学习不够深入,有错误和不完善的地方,希望大家多多指正。 //工程目录结构 //初始下载的工程主目录中,有package.yaml,Makefile和SConstruct 主Makefile 调用scons,自动构建SDK编译结构并编译 $(CPRE) scons $(VERB) --board=$(BOARD) -j4 scons会执行SConstruct脚本 SConstruct文件就功能而言相当于Makefile文件,就内容而言则是Python脚本,scons读入它时,会把脚本的命令都执行一遍 defconfig.build_components() ==》执行yoctools中的Make命令去build_components build_componet会根据package.yaml中定义的依赖和源码组成,自动逐级遍历生成依赖关系和make文件。 yoctools实现组件配置解析,依赖关系生成,make文件生成和build次序组织,以及执行make等; workspacecdkws.mk是自动生成的,此mk文件是CDK根据project的配置自动组织和生成的,已经组织好了必要的make结构,按照此.mk执行,即可编译出工程的目标文件 ==>cdkws.mk 的执行过程: preBuild, //编译前的User命令等的执行 pack Build, //编译所以必要的组件包(package.yaml定义的依赖关系) Project_Build, //app组件的代码编译,以及目标文件和所以组件包库文件的链接,生成最终目标文件 Project_PostBuild(aft_build) //编译后的User命令等的执行 archiving libaos_hal.a 组件的编译过程 //cdkws.mk中 aos_hal: @make -r -f Obj/BuildSet/Packages/aos_hal/v7.4.3/Makefile -j 4 -C test_helloword ==》aos_hal目标是使用./Obj/BuildeSet/Packages/中的Makefile文件来执行make,此Makefile文件有CDK平台生成 ./Obj/BuildeSet/Packages/目录中各个pack组件包的build中间文件目录,每个组件都将源码编译后的目标文件生成到./Obj/BuildeSet/Packages/下每个组件对应的目录下 每个组件最终生成一个库文件:组件名.a在OutDir=Obj中 @$(AR) $(ArchiveOutputSwitch) $(OutDir)/$(OutputFile)$(LibSuffix) @$(ObjectsFileList) app(组件)编译和链接 Project_Build: @make -r -f test_helloword.mk -j 4 -C test_helloword test_hellowordtest_helloword.mk //Auto Generated makefile by CDK 其中编译必要的app源码,最后和依赖的组件(Packages.a)链接生成最终的目标文件 链接 $(LinkerName)$(OutputSwitch) $(IntermediateDirectory)/$(OutputFile)$(ExeSuffix)$(LinkerNameoption) $(LinkOtherFlagsOption) @$(ObjectsFileList) $(LinkOptions) $(LibPath) $(Libs) ==》实际执行的编译命令 riscv64-unknown-elf-gcc-o Obj/test_helloword.elf -Wl,-Map="yoc.map"-Wl,-zmax-page-size=1024 //LinkOtherFlagsOption @test_helloword.txt //@$(ObjectsFileList) -nostartfiles-Wl,--gc-sections -T../__workspace_pack__/ch2601_evb/v7.4.3/gcc_flash.ld-mabi=ilp32 -mtune=e906 -march=rv32imacxtheade //$(LinkOptions) -LObj-L../__workspace_pack__/aos_hal/v7.4.3/lib -L../__workspace_pack__/aos/v7.4.3/lib-L../__workspace_pack__/at/v7.4.3/lib-L../__workspace_pack__/ch2601_evb/v7.4.3/lib-L../__workspace_pack__/chip_ch2601/v7.4.3/lib-L../__workspace_pack__/cli/v7.4.3/lib -L../__workspace_pack__/csi/v7.4.3/lib-L../__workspace_pack__/drivers/v7.4.3/lib-L../__workspace_pack__/drv_snd_ch2601/v7.4.3/lib-L../__workspace_pack__/drv_wifi_at_w800/v7.4.3/lib-L../__workspace_pack__/hal_csi/v7.4.3/lib-L../__workspace_pack__/kv/v7.4.3/lib -L../__workspace_pack__/lvgl/v7.4.3/lib-L../__workspace_pack__/minialsa/v7.4.3/lib-L../__workspace_pack__/netmgr/v7.4.3/lib-L../__workspace_pack__/newlib/v7.4.3/lib-L../__workspace_pack__/partition/v7.4.3/lib-L../__workspace_pack__/rhino_arch/v7.4.3/lib-L../__workspace_pack__/rhino_pwrmgmt/v7.4.3/lib-L../__workspace_pack__/rhino/v7.4.3/lib -L../__workspace_pack__/sal/v7.4.3/lib-L../__workspace_pack__/sdk_chip_ch2601/v7.4.3/lib-L../__workspace_pack__/sec_crypto/v7.4.3/lib -L../__workspace_pack__/ulog/v7.4.3/lib-L../__workspace_pack__/uservice/v7.4.3/lib //$(LibPath) ,库目录:Obj目录和其他的pack源码文件夹中的lib目录(可能没有) -Wl,--whole-archive -laos_hal -laos -lat -lch2601_evb-lchip_ch2601 -lcli -lcsi -ldrivers -ldrv_snd_ch2601 -ldrv_wifi_at_w800-lhal_csi -lkv -llvgl -lminialsa -lnetmgr -lnewlib -lpartition -lrhino_arch-lrhino_pwrmgmt -lrhino -lsal -lsec_crypto -lulog -luservice-Wl,--no-whole-archive //$(Libs)工程管理结构 sdk 在solution类型目录下使用。 当编译完成一个solution之后,可以在当前目录使用`aos sdk`来生成sdk包;这个sdk包只有app部分是源码,其他组件都是以.a库的形式存在`yoc_sdk`目录下。这个过程中会自动把当前目录的`package.yaml`、`Makefile`、`.gitignore`这三个文件修改成适合sdk形式的文件。 可以将整个solution目录打包给需要的开发者使用。 组件 根据组件的特点,分为以下4中类型组件:
提供芯片开发板的管脚配置、初始化函数、二进制数据等,该组件可以生成库文件 chip类型组件 提供芯片的 CSI 驱动功能,该组件可以生成库文件solution类型组件 能够生成二进制执行程序的组件,还包含 FLASH 分区、BOOT、resource 等资源,该组件可以生成 FLASH IMAGE包、烧录FLASH。 common类型组件 不符合 solution 、board、chip 三种类型的组件,统称为 common 组件,common 组件通常为独立的第三方软件包,也可以是针对具体芯片的专用软件包。 参考资料: YoC 平台说明文档 物联网操作系统AliOS Things 3.3 说明文档 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15706 浏览 1 评论
13761 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19682 浏览 2 评论
59126 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
88185 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
788浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
685浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:34 , Processed in 0.623462 second(s), Total 40, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号