范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

在鸿蒙(OHOS3。0)编译框架中添加树莓派4B

  前言
  之前在树莓派4b上点亮了OHOS3.0,不过内核是用tftp拉取的,根文件系统挂在了NFS上,拔了网线就无法启动。当然这么操作只是为了方便调试,而最终需要的是一个可以烧录到TF卡上的img镜像文件。这就需要将所有调试好的内容添加到OHOS3.0的编译框架,本以为是很简单的事情,好家伙,整了这么久,感觉添加编译框架比移植本身更复杂。于是我整理了添加树莓派单板到编译框架的内容,希望对各位有所帮助,为大家避坑。 一、添加编译配置文件和gn1.添加RPI4B.json
  主要参考 hisilicon build组件仓,添加一个products编译组件,这个组件是在产品配置文件中指定的。比如
  productdefinecommonproductsRPI4B.json
  其他部分参考Hi3516,但是其中2条,指定单板组件路径,并添加组件。如果删除这两条,将不能编译内核,只生成OHOS的文件系统。 ... .. "product_build_path": "device/raspberrypi/build", "parts":{     ... ...     "raspberrypi_products:raspberrypi_products":{},     ... ...     }2.添加ohos.build
  接下来在device目录下,新建一个raspberrypi编译组件文件夹,并添加 ohos.build 文件。和前面产品配置文件中的设置对应起来了。
  deviceraspberrypibuildohos.build {     "subsystem": "raspberrypi_products",     "parts": {         "raspberrypi_products": {             "module_list": [                 "//device/raspberrypi/build:products_group"             ]         }     } }
  新建 deviceraspberrypibuildBUILD.gn 当然每个厂家不可能只有1个板子,如果有其他单板就在这里指定,比如树莓派2B、3B等 import("//build/ohos.gni")  device_type = "rpi4b" group("products_group") {   deps += [     "//device/raspberrypi/rpi4b:rpi4b_group"   ] }
  既然前面指定了rpi4b的编译配置组件,那么就在 deviceraspberrypi 新建一个 rpi4b 的目录,可以参考 hi3516dv300 build组件
  deviceraspberrypirpi4bBUILD.gn import("//build/ohos.gni")  print("rpi4b_group in") group("rpi4b_group") {   deps = [     "build/rootfs:init_configs",     "//kernel/linux/build:linux_kernel"   ] }
  至此一个rpi4b build组件就添加到OHOS3.0的编译框架了,之后相关内容添加到这个文件夹下就可以了。 二、树莓派内核相关
  接下来分析下目前移植了树莓派4B的哪些内容,如何将这些内容编译进OHOS3.0。 1.raspberrypi内核补丁文件
  关于补丁可以参考 Patch组件,可以得知内核编译由kernel.mk来执行
  kernellinuxbuildkernel.mk DEVICE_PATCH_DIR := $(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION}/$(DEVICE_NAME)_patch DEVICE_PATCH_FILE := $(DEVICE_PATCH_DIR)/$(DEVICE_NAME).patch ... ... $(KERNEL_IMAGE_FILE):     $(hide) echo "build kernel..."     $(hide) rm -rf $(KERNEL_SRC_TMP_PATH);mkdir -p $(KERNEL_SRC_TMP_PATH);cp -arfL $(KERNEL_SRC_PATH)/* $(KERNEL_SRC_TMP_PATH)/     $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(HDF_PATCH_FILE) && patch -p1 < $(DEVICE_PATCH_FILE) ifneq ($(findstring $(BUILD_TYPE), small),)     $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(SMALL_PATCH_FILE) endif
  所以补丁文件需要放到正确的路径下,以正确的名字命名就可以patch到内核。
  hdf.patch补丁文件,现在还没有移植HDF相关内容,所以可以先使用Hi3516的
  rpi4b.patch补丁文件,使用树莓派的官方镜像,https://github.com/raspberrypi/linux kernellinuxpatcheslinux-5.10rpi4b_patchhdf.patch kernellinuxpatcheslinux-5.10rpi4b_patchrpi4b.patch2.内核编译配置文件
  kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig
  内核配置文件目前已知的需要开启下面内容,但是肯定不止这些,以后会继续更新 ~/ohos/kernel/linux/config/linux-5.10/arch/arm/configs/rpi4b_standard_defconfig ##################################################################################### > Security options     > (32768) Low address space for LSM to protect from user allocation       [*] NSA SELinux Support             #(选中)     [*]   NSA SELinux boot parameter    #(选中)     [ ]   NSA SELinux runtime disable     [*]   NSA SELinux Development Support     [*]   NSA SELinux AVC Statistics     (1)   NSA SELinux checkreqprot default value    #(设置为1)     (9)   NSA SELinux sidtab hashtable size     (256) NSA SELinux SID to context string translation cache size         First legacy "major LSM" to be initialized (SELinux)  ---> #(选中) SELinux         Ordered list of enabled LSMs #(填入:"lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf") ##################################################################################### > Device Drivers     > Android         [*] Android Drivers #(开启)         [*]   Android Binder IPC Driver #(开启) ##################################################################################### > Device Drivers      > Sound card support         <*> Advanced Linux Sound Architecture #(选中,直接编进内核)             <*>   ALSA for SoC audio support #(选中,直接编进内核) > Device Drivers      > Graphics support         <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) #(选中,直接编进内核)         <*> Broadcom V3D 3.x and newer #(选中,直接编进内核)         <*> Broadcom VC4 Graphics #(选中,这个依赖前面的声卡设置,不然是无法编入内核的) ##################################################################################### > Device Drivers      > Input device support          > Touchscreens             <*>   Raspberry Pi"s firmware base touch screen support #(选中,直接编进内核)三、驱动适配1.显示配置
  Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。VideoCore IV 驱动程序是 VC4,VideoCore VI 驱动程序的 V3D。内核已经提供驱动,参考rpi4b_standard_defconfig将驱动直接编入到内核。
  同时需要在config.txt中开启设置 dtoverlay=vc4-fkms-v3d
  OHOS中修改weston的配置文件,指定显示驱动
  systemetcweston.ini [output] name=card02.触摸配置
  具体思路就是先查找设备号,根据设备号找到驱动程序。 ls -l /sys/dev/char/|grep input    # 查看input下的触摸设备的主次设备号 cat /sys/dev/char/13:64/device/uevent	# 然后输入主次设备号,查看设备的驱动程序 PRODUCT=19/0/0/0 NAME="raspberrypi-ts" PROP=2 EV=b KEY=400 0 0 0 0 0 0 0 0 0 0 ABS=2608000 3 MODALIAS=input:b0019v0000p0000e0000-e0,1,3,k14A,ra0,1,2F,35,36,39,mlsfw
  前面内核配置的时候rpi4b_standard_defconfig中已经将触摸驱动编入内核,所以后面不需要在init加载模块了,修改下eudev的配置文件即可。
  third_partyeudevrules.d	ouchscreen.rules ATTRS{name}=="raspberrypi-ts", ENV{ID_INPUT}="1", ENV{ID_INPUT_TOUCHSCREEN}="1" ATTRS{name}=="VSoC keyboard", ENV{ID_INPUT}="1", ENV{ID_INPUT_KEYBOARD}="1" DRIVERS=="hid-multitouch", ENV{ID_INPUT}="1", ENV{ID_INPUT_TOUCHSCREEN}="1"四、制作镜像文件1.修改内核编译脚本
  正常情况下内核是由uboot进行引导的,而且OHOS默认生成uImage。但是树莓派自带BootLoader,虽然可以先用树莓派自带的BootLoader启动uboot,再用uboot加载uImage,但是这样会比较麻烦,而且会增加启动时间。不过目前 zImage是写死在kernel.mk中的,没办法改下编译脚本把。
  kernellinuxbuildkernel.mk 将 uImage 改为 zImage modules dtbs $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 zImage
  kernellinuxbuildbuild_kernel.sh - cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/uImage ${3}/uImage + cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/zImage ${3}/zImage
  kernellinuxbuildBUILD.gn - outputs = [ "$root_build_dir/packages/phone/images/uImage" ] + outputs = [ "$root_build_dir/packages/phone/images/zImage" ]
  kernellinuxbuildkernel_module_build.sh - LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/zImage
  这里内核编译会依赖product_path="vendor/$product_company/$product_name"下的hdf.hcs文件,得先新建一个应付下,不然会报下面这个错误。
  ninja: error: "../../vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs", needed by "gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb", missing and no known rule to make it
  新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs root {     module = "default"; }2.制作树莓派boot目录
  对于镜像烧录,Hi3516会将uImage、system.img、vendor.img等镜像烧写到emmc,但是树莓派使用TF卡启动,所以需要对TF卡进行分区,然后复制对应的内容到各个分区。首先制作树莓派boot目录,这个用来目录存放树莓派设备树、config.txt、cmdline.txt、内核镜像等信息。写一个简单的mkboot.py脚本来实现这个功能,位置在码仓rpi4bdeviceraspberrypiimagesmkboot.py将会生成boot.img。
  为了方便烧录,需要将boot.img、system.img、updater.img、vendor.img、userdata.img合并成一个rpi4b.img。还是写一个简单的脚本来处理这个步骤rpi4bdeviceraspberrypiimagesmkboot.py。
  不过有个问题,主分区只支持4个,所以updater.img暂时先不合并了,这个问题等以后再来处理。
  最后将会得到一个rpi4b.img的镜像文件,将这个文件烧录到SD卡就可以了。
  Linux:可以使用dd命令
  windows:使用Win32 Disk Imager工具烧录即可。
  到这里总算是跑通了一个完整的添加新单板的流程,只不过目前只适配了显示和触摸。接下来打算尝试HDF或者distributed部分。

OnexPlayer壹号掌机惊艳亮相微软Windows11媒体品鉴会2021年10月12日,微软在京举行与你所爱,更进一步为主题的Windows11新一代PC媒体品鉴会,现场邀请了包括政府财经科技消费电子等多领域的媒体,通过主题演讲和场景体验等方式最强低功耗CPU酷睿i71195G7,OnexPlaye1S的游戏性能到底如何?怎么衡量一款CPU的性能如何,普通消费者的直观感受就是核芯越多,性能越强。但是不得不说,这种观点过于片面,拿Intel和AMD两大巨头公司来说,AMD喜欢更多的核芯,Intel则相玩游戏除了专业游戏本可以选择WIN10掌机或迷你游戏本吗?现如今,玩PC3A游戏的人越来越多,而对于游戏的设备,一般人都认为要么是台式机,要么是专业的游戏本,其他的任何设备都显得不伦不类,而今天小编恰恰持有不同的看法,给大家推荐两款壹号本OnexPlayer1195G7版本掌机正式发布,随时随地畅玩游戏大作OnexPlayer壹号游戏掌机自今年5月正式发布后,一直受到广大游戏爱好者的持续关注,关于产品的性能提升,也是众望所归。9月5日,官方终于正式发布了升级版本即搭载了第十一代英特尔OnexPlayer壹号游戏掌机受邀参展2021英特尔零售合作伙伴峰会一直以来,英特尔零售合作伙伴峰会不仅是英特尔与全球零售及渠道合作伙伴同心交流共促合作的年度盛会,同时也是PC产业技术创新与营销趋势的风向标。2021英特尔零售合作伙伴峰会将邀请业内电视游戏的王炸来了,真机体验后,根本停不下来周末放假宅在家里,有不少人都喜欢打游戏消磨时间和解压。手游虽然玩的人很多,但手机屏幕小,看起来总归没有那么过瘾,低头玩时间长了肩颈酸痛,仿佛是在公司加班。随着越来越多的智能电视上市如何实现OSM地图本地发布并自定义配图1缘起OpenStreetMap(简称OSM)不仅可以免费在线使用,还可以免费下载原始数据,数据格式有。osm。pbf和shp。我们将OSM原始数据下载下来,处理成矢量瓦片,发布成考个消防证挂靠单位赚不劳之钱?这种歪风该刹刹了最近几年,上网过程中不时会见到消防工程师报考的广告,里面会暗示甚至直接了当地提示考得消防工程师证之后,可以挂靠单位,不用去上班,就可以每年获得多少万的持证躺赚收入,有的甚至呼悠在家OSM地图本地发布如何生成各省市矢量地图1缘起openmaptiles提供了一套OSM数据使用的完整解决方案,在前面文章如何实现OSM地图本地发布并自定义配图中,我们详细介绍了如何安装openmaptiles,并生成了一淘宝的微信小程序版即将上线,两个大佬终于放弃垄断自封了刚刚过去的一天,一则重磅消息进了我的眼阿里和腾讯很有可能要进行合作,淘宝特价版将支持微信支付,同时还计划上线微信小程序。网络的意义在于价值交换其实这一天早应到来的,只是该来的总会来OnexPlayer掌机性能再升级搭载英特尔i71195G7在以前,超薄的平板或是笔记本虽然拥有高颜值,但是在性能方面一直被诟病,因为处理器太弱,只能处理一些轻办公或是影音娱乐,像玩游戏或是图片设计视频剪辑等完全不能胜任。但是随着科技进步,
2。Delphi语法基础4。ObjectPascal运算符与表达式4。ObjectPascal运算符与表达式运算就是对数据的加工和处理过程,运算符是在代码中对各种数据类型的值进行运算的符号。在ObjectPascal中,运算符分为单目运算符和双目新能源汽车保值率前五新能源汽车高速发展的这两年,在销量上获得了巨大成功,虽然在用车成本上比汽油车少了很多,但是也有消费者很在意车辆的保值率,由于电池的特性,新能源车的保值率普遍不如燃油车,那么具体情况滴滴净亏2900万,全线裁员20!是彻底倒台,还是收缩兵力?这两天,网约车行业因为一则重磅消息,被吓破了胆。滴滴全线裁员20,有些业务部门甚至达到百分之40,并且还放出了自己的财务报表,净亏2900万!这是真的要倒台了,还是在收缩兵力,以应一分钟了解什么是京东自营,京东自营怎么入驻?京东作为国内最大的自营电商平台,其自营模式如今是非常完善成熟的,流量占比达到了京东全站的百分之七十,而且自营卖出的产品都是有京东背书,为商家的售后担保,所以有很多买家愿意选择相信,腾讯推出XR全新业务布局全真互联网鞭牛士2月15日消息,据新浪科技消息,腾讯推出了一项全新业务XR(扩展现实,ExtendedReality)业务,并于日前在内部开启活水招聘(即在内部跨部门调岗)。在这份内部资料中高端吹风机是智商税吗?以高端吹风机为首的戴森在国内被称为中产收割机。在上个世纪90年代,戴森在美国的价格是普通吹风机的三倍,但仍然在美国掀起了一阵戴森风。统计表明,戴森产品的主要购买者来自于美国中产阶级浅谈SpringDataElasticSearchSpringDataSpringData帮助我们避免了一些样板式代码,比如我们要定义一个接口,可以直接继承接口ElasticSearchRepository接口,这样SpringDiPhoneSE3新机或于3月上市包含三款机型来源环球网2月14日消息,据外媒消息,苹果已经启动iPhoneSE3的量产,预计将于今年3月中下旬上市。此前,有消息称全新的iPhoneSE3将提供3款机型,目前已登陆欧亚经济委员旧电脑回收估价53元,还不如扔掉13年读大学的时候买了一台联想笔记本电脑,N480牌子的,算是老牌子了,但是配置可以的,感觉也挺好用的,因为用的时间比较久了,于是在19年的时候买了一台新的华硕笔记本电脑,有了新电伴娃成长每一天,萤石BM1宝宝摄像机堪称育儿神器小崽子今年五岁,幼儿园中班,每天放学会接到奶奶家,等我们下班都已经晚上八点了。接回家基本上就直接睡觉了。所以,工作日总觉得跟小崽子在一起的时间短,不知道小崽子在奶奶家干了什么。有时联想将发布ThinkBook系列数字藏品鞭牛士2月15日消息,据NervinaLabs公众号发文称,联想即将发布ThinkBook系列数字藏品,总共有3种类型ThinkBook新锐元宇宙AMD城市(300份)ThinkB