# OH_L2_doc **Repository Path**: wpf001/OH_L2_doc ## Basic Information - **Project Name**: OH_L2_doc - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-09-02 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenHarmonyNXP #### 介绍 OpenHarmony L2 适配NXP芯片亮屏总结 #### 软件架构 OpenHarmony + NXP芯片组件 #### 代码下载 ``` repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify repo sync -c repo forall -c 'git lfs pull' ``` #### 环境搭建 1. 物理设备 ``` NXP板子一块(含显示屏) USB转串口芯片一块 网线 电源线 ``` 2. 软件工具 #### IPOP串口工具,可以从互联网获取,通过COM口可以进入shell,给设备下发指令,接收串口日志,常用命令如下: 关闭kernel日志输出 ``` echo 0 0 0 0 > /proc/sys/kernel/printk ``` 打开kernel日志输出 ``` echo 15 4 1 7 > /proc/sys/kernel/printk ``` 配置网口地址以便于HDC连接 ``` ifconfig eth0 192.168.100.10 up ``` 启动hdcd服务,服务启动后会监听一个端口,端口号在IPOP终端中会打印出来 ``` hdcd -t -l 5 ``` #### HDC,类似ADB,通过网口传输,可以给单板替换文件 下载地址 ``` https://gitee.com/openharmony/developtools_hdc_standard ``` PC连接单板命令 ``` hdc tconn 192.168.100.10:55555 ``` 这里的IP是上面ipconfig配置的地址,端口是启动hdcd打印的端口 使用hdcd传输文件到单板 ``` hdc target mount hdc file send ${local_file} ${remote_file} hdc file recv ${remote_file} ${local_file} hdc shell cmd ``` #### 版本编译说明 全量编译命令,在代码根目录下执行 ``` ./build.sh --product-name Hi3516DV300 ``` 镜像保存目录 ``` out/ohos-arm-release/packages/phone/images ``` graphic相关so存放目录 ``` out/ohos-arm-release/graphic/graphic_standard ``` 编译完后需要把虚拟机上的二进制文件弄到PC机上去,我这里使用共享目录来完成 先建一个虚拟机和PC本地的共享目录,自行百度如何再虚拟机中操作,然后挂载,开机后执行一次即可 ``` sudo mount -t vboxsf ubuntu_share /home/chenkan/share ``` ubuntu_share为PC本地共享目录路径,再将虚拟机上so或者img拷贝到/home/chenkan/share中,PC就可以看到了 eg: ``` cp -p -R /home/chenkan/OpenHarmony/out/ohos-arm-release/graphic/graphic_standard /home/chenkan/share/ ``` 再用上面hdc命令将PC上文件推送到单板即可。 如果要完整替换镜像,需要通过sd卡辅助完成,需要将虚拟机上的镜像拷贝到SD卡中,命令如下: ``` umount /media/chenkan/_ sudo dd if=~/OpenHarmony/out/ohos-arm-release/packages/phone/images/system.img of=/dev/sdc3 bs=64k umount /media/chenkan/_vendor sudo dd if=~/OpenHarmony/out/ohos-arm-release/packages/phone/images/vendor.img of=/dev/sdc4 bs=4k ``` 命令中的相关参数根据实际情况修改,df -h 查看分区信息 data 分区挂载不上时需要修改分区表 /init.cfg ``` /dev/block/mmcblk1p2 /data ext4 nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc wait,reservedsize=104857600 ``` #### 测试 1. modetest 查看驱动节点是否正常,可能是card0,也可能是card1 ``` /dev/dri/card0 ``` 修改modetest编译配置,在文件 third_party/libdrm/BUILD.gn 添加下面代码 ``` config("modetestconfig") { visibility = [":*"] include_dirs = [ "tests" ] cflags = [ "-Wno-sign-compare", "-Wno-unused-variable", "-Wno-deprecated-declarations", "-Wno-enum-conversion", "-DMAJOR_IN_SYSMACROS=1" ] } ohos_executable("modetest") { install_enable = true sources = [ "tests/util/pattern.c", "tests/util/format.c", "tests/util/kms.c", "tests/modetest/buffers.c", "tests/modetest/cursor.c", "tests/modetest/modetest.c", ] configs = [":modetestconfig"] public_configs = [":libdrm_public_config"] deps = [":libdrm"] public_deps = [] part_name = "graphic_standard" subsystem_name = "graphic" } ``` 编译modetest ``` ./build.sh --product-name Hi3516DV300 --build-target modetest ``` 将生成的modetest二进制文件推送到单板上面,并添加可执行权限 执行命令查看drm驱动信息,ModeName是drm-module-name 在代码vsync_type.h中查看 ``` modetest -M ModeName ``` 在输出的结果中找到分辨率,connector id 等信息,在执行测试命令 ``` modetest -M ModeName -s connector_id:WxH –v ``` 结果是正常显示彩虹条 2. wm_test验证 对应实现代码 ``` foundation/graphic/standard/frameworks/wm/src/window_manager_test.cpp ``` 测试命令 ``` wm_test 1 wm_test 8 ```