[经验分享] 【源文件说明】(DEVICE-VENDOR)适配源文件描述 原创

诚迈_雨哥 显示全部楼层 发表于 2023-12-7 12:58:53

阅读提示

  • 我在阅读开发板适配开源系统时,详细整理了device,vendor和kernal等目录下需要增加或者修改的文件,并将其文件功能列出,期望对开发板、SoC 适配的同学有所帮助。文件基于2022年初的主线版本。
  • 开发板适配前,为了较大程度上降低适配的工作量和难度,避免重复踩坑,可参考《【SOC适配】(BOARD-SoC)所有开发板支持的系统》文档,其中详细整理了<b>品牌、开发板、支持的系统、适配内容、典型SoC以及应用场景说明</b>

序 号 路径、文件名称 功能描述
1 Kconfig Kconfig是配置项的描述文件,支持设置配置项及其默认值,依赖关系等等,比如kernel/liteos_a/Kconfig,该文件还会继续依赖各个模块的Kconfig文件
2 Kconfig.liteos_m.board 具体开发板宏定义;
3 Kconfig.liteos_m.boards 所有开发板宏定义;
4 Kconfig.liteos_m.defconfig SoC默认配置;
5 Kconfig.liteos_m.defconfig.boards 提供指定公司的开发板的默认配置项信息
6 Kconfig.liteos_m.defconfig.series 系列开发板的默认配置,xxx系列默认配置;
7 Kconfig.liteos_m.series SoC系列产品定义, xxx系列配置,包含arch架构,公司名称,cpu类型;
8 Kconfig.liteos_m.shields 用于配置扩展板信息,使用*通配符匹配所有的扩展板,可以将所有扩展板配置信息都加载进来。
9 Kconfig.liteos_m.soc xxx芯片配置,Soc宏定义,公司名称宏定义;每个厂家的SoC均要定义;
10 LICENSE 在board,soc和vendor中oat.xml,LICENSE成对出现
11 oat.xml 在board,soc和vendor中oat.xml,LICENSE成对出现
12 Kconfig.liteos_m.defconfig.shield 扩展版默认配置;
13 Kconfig.board.applications 开发板自带的应用程序配置;
14 Kconfig.liteos_m.applications 系统自带的应用程序配置;
15 Kconfig.projbuild 应用程序管理器;
16 EULA 最终用户许可协议(End User Licence Agreement,EULA),指的是一家公司的软件与软件的使用者所达成的协议
17 kernel_configs/debug.config 编译宏开启设置;
18 init_configs/init_xxos_xxsoc.cfg 系统初始化时创建的目录文件及权限配置;
19 init_configs/init_xxos_xxsoc_mksh.cfg 系统初始化时创建的目录文件及权限配置;
20 target_config.h 各个板卡os目标参数配置;
21 device/ 设备驱动目录
22 device/board/ 单板厂商目录
23 device/board/ bearpi/ 单板厂商名字:小熊派
24 device/board/ bearpi/ bearpi_hm_micro 单板名:bearpi_hm_micro
25 device/soc/ SoC厂商目录
26 device/soc/common 存放公共HDF驱动
27 device/soc/st/ SoC厂商名字:ST意法半导体
28 device/soc/st/stm32mp1xx SoC Series名:stm32mp1xx系列芯片
29 vendor/ 厂商目录;
30 vendor/bearpi/ 开发产品样例厂商目录,小熊派的产品样例
31 vendor/bearpi/bearpi_hm_micro 产品名字:bearpi_hm_micro开发板
32 vendor/bearpi/bearpi_hm_micro/config.json 预编译适配,产品名称,开发板名称,ohos版本,公司名称,os内核等;由 hb set命令显示菜单,选择后输出ohos_config.json, 通过 hb env查看;
33 device/board/bearpi/bearpi_hm_micro/liteos_a/config.gni 用于描述这个产品样例所使用的单板、内核等信息,属开发板描述信息
34 device/board/bearpi/bearpi_hm_micro/hal Board adapter dir for OHOS components.
35 device/board/bearpi/bearpi_hm_micro/liteos_a/board/target_config.h 内存地址映射及os中断定义;
36 device/qemu/arm_virt/liteos_a/board/os_adapt/os_adapt.c 调用 SystemInit 对系统初始化,然后调用DeviceManagerStart对hdf初始化,最后调用hcs,drivers;
37 device/board/bearpi/bearpi_hm_micro/liteos_a/drivers/Kconfig 中添加芯片、产品名称、厂商名称相关配置。
38 device/soc/st/common/platform/Kconfig 中添加驱动相关配置。
39 vendor/bearpi/bearpi_hm_micro/kernel_configs/debug_tee.config 中使能Kconfig相关配置。
40 device/board/bearpi/bearpi_hm_micro/liteos_a/BUILD.gn 添加此模块依赖board、drivers、hdf_config
41 device/board/bearpi/bearpi_hm_micro/liteos_a/board/BUILD.gn 将os_adapt.c内核启动相关代码编译进系统。
42 device/board/bearpi/bearpi_hm_micro/liteos_a/drivers/BUILD.gn 将device/soc/st/common/platform路径下的HDF驱动编译进系统。
43 vendor/bearpi/bearpi_hm_micro/hdf_config/BUILD.gn 将HCS配置文件编译进系统。
44 device/board/bearpi/bearpi_hm_micro/liteos_a/board/os_adapt.c 添加以下内核启动相关代码
45 device/soc/st/common/platform/gpio/BUILD.gn 描述了stm32mp1xx gpio驱动的编译适配
46 device/soc/st/common/platform/gpio/stm32mp1_gpio.c 描述了stm32mp1xx gpio驱动的源码适配。 首先,按照OpenHarmony的HDF驱动框架加载驱动基本适配框架
47 device/soc/st/stm32mp1xx/sdk_liteos/hdf_config/gpio/gpio_config.hcs 添加gpio硬件描述信息文件在该文件中添加驱动私有配置信息。
48 vendor/bearpi/bearpi_hm_micro/hdf_config/device_info/device_info.hcs 配置产品加载驱动,产品的所有设备信息被定义在源码文件中,平台驱动请添加到platform的host中。
49 device/soc/st/common/platform/gpio/stm32mp1_gpio.c 完善驱动代码,gpio_config.hcs的配置信息会在GpioDriverInit中加载。
50 vendor/bearpi/bearpi_hm_micro/config.json OpenHarmony子系统适配只需要在config.json中增加对应子系统和部件,这样编译系统会将该部件纳入编译目标中。启动恢复子系统需要适配bootstrap_lite、syspara_lite、appspawn_lite、init_lite四个部件。请在中新增对应的配置选项。 系统启动时会根据//vendor/bearpi/bearpi_hm_micro/init_configs中的启动配置来启动系统。 包含如下子系统:subsystem: startup,subsystem: hiviewdfx, subsystem: distributed_schedule,subsystem: security,subsystem: utils,subsystem: graphic,subsystem: ace,subsystem: aafwk, subsystem: appexecfwk,
51 vendor/bearpi/bearpi_hm_micro/init_configs 配置启动系统。
52 vendor/bearpi/bearpi_hm_micro/graphic_config/product_graphic_lite_config.h 图形子系统适配
53 vendor/bearpi/bearpi_hm_micro/ace_lite_config/product_acelite_config.h ACE开发框架子系统适配
54 vendor/bestechnic 开发产品样例厂商目录,恒玄开发的带屏样例,因此以bestechnic命名
55 vendor/bestechnic/display_demo 产品名字:以智能开关面板的带屏显示样例
56 vendor/bestechnic/display_demo/config.json 描述这个产品样例所使用的单板、内核等信息;
57 device/board/fnlink/v200zr/liteos_m/config.gni 描述这个产品样例所使用的单板、内核等信息;
58 kernel/liteos_m/Kconfig 文件中使用这些导出的环境变量,Kconfiglib采用ulfalizer开发基于python的版本,源码地址,功能介绍连接参考,里面用到了orsource关键字,其中o表示optional,表示这个文件是否存在可选,r表示relative,表示这个文件相对当前文件的相对路径。
59 device/board/fnlink/v200zr/ v200zr单板配置目录
60 device/board/fnlink/v200zr/Kconfig.liteos_m.board 提供v200zr单板的配置选项
61 device/board/fnlink/v200zr/Kconfig.liteos_m.defconfig.board 提供v200zr单板的默认配置项
62 device/board/fnlink/v200zr/Kconfig.liteos_m.boards 提供fnlink单板厂商下Boards配置信息
63 device/board/fnlink/v200zr/Kconfig.liteos_m.defconfig.boards 提供fnlink单板厂商下Boards默认配置信息
64 device/board/fnlink/v200zr/Kconfig.liteos_m.shields 提供fnlink单板厂商下扩展板配置信息
65 device/board/fnlink/v200zr/shields/ fnlink单板厂商的扩展板目录
66 device/board/fnlink/v200zr/shields/v200zr-t0/ fnlink单板厂商的扩展板v200zr-t0
67 device/board/fnlink/v200zr/shields/v200zr-t0/Kconfig.liteos_m.defconfig.shield 扩展板v200zr-t0默认配置
68 device/board/fnlink/v200zr/shields/v200zr-t0/Kconfig.liteos_m.shield 扩展板v200zr-t0配置信息
69 device/soc/bestechnic/bes2600/ bes2600 SoC系列
70 device/soc/bestechnic/bes2600/Kconfig.liteos_m.defconfig.bes2600w bestechnic芯片厂商bes2600w SoC Series配置
71 device/soc/bestechnic/bes2600/Kconfig.liteos_m.defconfig.series bestechnic芯片厂商bes2600默认配置
72 device/soc/bestechnic/bes2600/Kconfig.liteos_m.series bestechnic芯片厂商bes2600 SoC Series配置
73 device/soc/bestechnic/bes2600/Kconfig.liteos_m.soc bestechnic芯片厂商bes2600 SoC配置
74 device/soc/bestechnic/Kconfig.liteos_m.defconfig bestechnic芯片厂商SoC默认配置
75 device/soc/bestechnic/Kconfig.liteos_m.series bestechnic芯片厂商SoC Series配置
76 device/soc/bestechnic/Kconfig.liteos_m.soc bestechnic芯片厂商 SoC配置
77 kernel/liteos_m/Makefile 在Kconfig中配置完成后,在 kernel/liteos_m/Makefile 使用make menuconfig将参数保存到kernel_configs/debug.config或者kernel_configs/release.config; Kconfig的图形化配置后,将其生成的配置结果可以作为gn编译的输入,以控制不同模块是否编译
78 kernel/liteos_m/BUILD.gn 指定了Board和SoC的编译入口为//device/board/fnlink和//device/soc/bestechnic。
79 device/board/fnlink/BUILD.gn 新增指定内核下的模块编译;
80 device/soc/bestechnic/bes2600/liteos_m/sdk/bsp/rtos/liteos/liteos_m/board.c 在第三阶段内核启动中,内核启动适配总体思路如下: 中断向量的初始化os_vector_init ,初始化中断的处理函数。 内核初始化osKernelInitialize 。创建线程board_main,进行芯片平台初始化。内核启动,开始调度线程osKernelStart 。
81 device/soc/bestechnic/bes2600/liteos_m/components/utils/src/hm_sys.c OhosSystemAdapterHooks函数在文件中trace初始化,hdf初始化;
82 vendor/bestechnic/display_demo/fs 放置两部分内容: wifi_Download_cfg.yaml:镜像的烧录配置文件,可以根据实际情况调整分区。 /data/data:第一个/data是挂载的根目录;第二个data是根目录里面的data目录,里面可以存放预置文件,或者在第二个data的同级目录再创建一个目录,打包的时候只认第一个data挂载根目录。
83 vendor/bestechnic/display_demo/fs/wifi_Download_cfg.yaml 镜像的烧录配置文件,可以根据实际情况调整分区。
84 vendor/bestechnic/display_demo/fs/data/data 第一个/data是挂载的根目录;第二个data是根目录里面的data目录,里面可以存放预置文件,或者在第二个data的同级目录再创建一个目录,打包的时候只认第一个data挂载根目录。
85 device/soc/bestechnic/bes2600/liteos_m/components/hdf_config/hdf.hcs 配置文件系统的烧录的起始地址、文件系统的大小以及读数据块的大小block_size等信息
86 device/soc/bestechnic/bes2600/liteos_m/components/fs/fs_init.c 通过hdf加载数据,进行读写flash;
87 device/board/fnlink/v200zr/liteos_m/config.gni 新增这些函数的wrap链接编译选项;主要包括内存分配,打印,文件读写;
88 device/board/fnlink/drivers/liteos_m/display/BUILD.gn 根据hdf_driver模板加载,编译驱动模块
89 build/lite/components/communication.json wifi_lite部件编译目标的定义;
90 foundation/communication/wifi_lite/BUILD.gn 描述需要适配软总线的接口文件路径;
91 foundation/communication/wifi_lite/BUILD.gn 描述需要适配的接口头文件路径
92 device/soc/bestechnic/hals/communication/wifi_lite/wifiservice wifi属于SoC提供的功能,所以适配源码放在SoC的目录下,包含wifi_device.c和wifi_hotspot.c分别适配wifi_device.h和wifi_hotspot.h
93 device/soc/bestechnic/bes2600/liteos_m/components/net/lwip-2.1/BUILD.gn LWIP部件适配,LiteOS-M kernel目录下默认配置了lwip,因而具有编译功能,可以在kernel组件中指定lwip编译的目录。描述了lwip的编译
94 device/soc/bestechnic/bes2600/liteos_m/components/net/lwip-2.1/porting/include/lwip/lwipopts.h 原有lwip配置选项保持不变,软总线会依赖这些配置选项,并且新增硬件适配的配置项
95 device/soc/bestechnic/bes2600/liteos_m/components/net/lwip-2.1/porting/src/ethernetif.c 对ethernet网卡初始化的适配
96 foundation/communication/dsoftbus/dsoftbus.gni dsoftbus部件在文件中提供了softbus_adapter_config配置选项可供移植过程进行配置,该配置设定了软总线移植适配的路径。
97 vendor/bestechnic/mini_distributed_music_player/dsoftbus_lite_config softbus_adapter_config配置为路径,该路径下的内容为: 软总线功能特性配置,例如是否开启自发现功能等, 软总线规格特性配置,例如设置软总线日志级别设置
98 vendor/company/product/init_configs/etc 该文件夹中包含rcS脚本,Sxxx脚本和fstab脚本。init进程在启动系统服务之前执行这些脚本。执行的流程为“rcS->fstab->S00-xxx“。Sxxx脚本中的内容与开发板和产品需要有关,主要包括设备节点的创建、创建目录、扫描设备节点、修改文件权限等等。这些文件在产品编译的BUILD.gn中按需拷贝到产品out目录中,最终打包到rootfs镜像中。
99 vendor/company/product/init_configs/init.cfg init进程启动服务的配置文件,当前支持解析的命令有: start: 启动某个服务 mkdir: 创建文件夹 chmod: 修改指定路径/文件的权限 chown: 修改指定路径/文件的属组 mount: 挂载命令
100 vendor/company/product/init_configs/hals 解决方案厂商对OS的适配,需要实现的接口请见各个组件的readme说明文档。
101 vendor/company/product/config.json config.json为编译构建的主入口,包含了开发板、OS组件和内核等配置信息。
102 vendor/company/product/fs.yml 该文件用于配置文件系统镜像制作过程,将编译产物打包成文件系统镜像,比如用户态根文件系统rootfs.img和可读写的userfs.img。它由多个列表组成,每个列表对应一个文件系统
103 device/soc/bestechnic/bes2600/liteos_m/sdk/bsp/out/best2600w_liteos/_best2001.lds 适配bootstrap_lite部件时,添加连接脚本文件
104 drivers/adapter/platform/gpio/gpio_bes.c 恒玄gpio驱动的源码适配
105 kernel/liteos_m/kal/libc/newlib/porting/src/fs.c 适配了newlib的_read、_write等函数
106 device/board/fnlink/drivers/liteos_m/display/zzw395.c 加载显示驱动
107 vendor/asrmicro/wifi_demo/tests/dsoftbus/dsoftbus_app.c dsoftbus组件的启动接口
108 device/board/fnlink/drivers/liteos_m/display/BUILD.gn 同SoC驱动适配,根据hdf_driver模板加载显示驱动模块
109 device/board/talkweb/niobe407/liteos_m/hdf_config/device_info.hcs 使用TIM2、TIM3和TIM7定时器输出PWM信号
110 device/board/talkweb/niobe407/liteos_m/hdf_config/hdf.hcs 配置TIM定时器具体信息
111 hdf_core/adapter/platform/pwm/pwm_stm32f4xx.c 是st关于pwm的驱动适配;
112 foundation/communication/dsoftbus/core/authentication/src/auth_manager.c 软总线的组网需要通过设备认证,在研发阶段,可以把认证跳过,先行调试组网以及传输能力
113 kernel_liteos_m/blob/master/components/net/lwip-2.1/porting/include/lwip/lwipopts.h dsoftbus组件的运行需至少预留80KB RAM。如资源不够,可对其它地方进行剪裁。
114 device/soc/asrmicro/asr582x/liteos_m/sdk/hal/src/wifi_adapter.c Wi-Fi有关的实现在
115 vendor/asrmicro/wifi_demo/tests/wifi/wifi_app.c 提供了两个连接的测试指令,wifi_open, wifi_close:
116 device/soc/asrmicro/asr582x/liteos_m/components/mbedtls 第三方加密算法目录;
117 foundation/communication/dsoftbus/adapter/common/mbedtls/softbus_adapter_crypto.c 有使用
118 third_party/lwip 是lwIP开源代码,是轻重量级tcpip网络协议,适合arm,里面只做了少量的侵入式修改,为了适配增强功能。
119 kernel/liteos_m/components/net/lwip-2.1 是lwIP适配和功能增强代码,里面提供了lwIP的默认配置文件。
120 device/soc/asrmicro/asr582x/liteos_m/sdk/startup/board.c 单板进入到main函数后,首先会进行单板初始化,然后需要注册中断,之后再进行内核的初始化和调度,注册中断。
121 vendor/asrmicro/wifi_demo/kernel_configs/debug.config 为了方便调试,本方案集成了内核的shell组件,可以在make menuconfig中的Debug中选中 Enable Shell,或者在debug.config文件中填入LOSCFG_SHELL=y shell组件需要进行初始化
122 device/soc/asrmicro/asr582x/liteos_m/sdk/startup/board.c 进行初始化
123 vendor/asrmicro/wifi_demo/tests/wifi/wifi_app.c 每个shell命令需要进行注册,例如:wifi_open, wifi_close;
124 kernel/liteos_m/kal/libc/musl/porting/src/malloc.c kernel对malloc相应的code进行了改造适配
125 device/soc/asrmicro/asr582x/liteos_m/sdk/drivers/platform/system/printf-stdarg.c printf相关的接口使用开源代码实现
126 device/board/lango/dev_wifi_a/liteos_m/config.gni 为了满足printf相关接口的链接调用,新增这些函数的wrap链接
127 device/board/hihope/neptune100/liteos_m/config.gni 配置文件用于描述该单板信息,包括CPU型号、交叉编译工具链及全局编译、链接参数等重要信息
128 vendor/hihope/neptune_iotlink_demo/kernel_configs HDF驱动框架提供了一套应用访问硬件的统一接口,可以简化应用开发,添加 LOSCFG_DRIVERS_HDF=y LOSCFG_DRIVERS_HDF_PLATFORM=y
129 drivers/adapter/platform/uart/uart_wm.c 芯片uart驱动适配
130 device/board/hihope/shields/neptune100/neptune100.hcs 添加uart硬件描述信息

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部