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

在鸿蒙(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部分。

世界上最危险的职业,真的拿命开玩笑,一月能挣60万世界上最危险的职业,一个月能挣60万,啾咪啾咪!和发兔去看看这里是湖南省崀山八角寨,快看,飞檐走壁的那个人在做什么?没错,他正做着替人插香的工作,据说,凡是在这里虔诚的人供香,一定世界上昂贵的三种香烟,最后一种,一盒相当于一辆宝马车!第三名Behike雪茄烟来自古巴,价值15000欧元,约合人民币15万元。雪茄采用的原料是七至九年的烟叶,包装十分精致,盒内装有40根的雪茄烟,一根价格约375欧元。第二名Chig全世界最贵的三个水果,一份就要800多万,真的吃不起啊!第3名夕张王甜瓜来自日本北海道,有水果之王的美誉之称,和普通甜瓜不一样,它对温度阳光空气和生长环境要求极为严格,培育出来的果肉呈橙色,十分诱人,普通的夕张王甜瓜价格约合人民币19万全世界最刺激的三款过山车,第一名全长1700米第三名富士急乐园高飞车位于日本山梨县,长度为1000米高度43米,是全球过山车之最,游客可以体验到2秒内从0加速到100千米的加速度和在垂直上升到43米高的塔上之后,以121度的角世界上超豪华的三座酒店,最贵的一晚40万元人民币!住不起!第3名拉兹皇宫酒店位于斋普尔,是一家五星级酒店,一晚花费价格约合人民币29万元,酒店历史悠久,曾是斋普尔的一座宫殿,面积很大,每个房间里都装有很多高端奢侈品和皇室博物馆的收藏品。第世界3大顶级美食,吃一小口,几年班都白上了!第三名夕张王甜瓜产自于日本夕张,是甜瓜界的名门贵族,在2008年还特意举办了一场选秀销售会,参加选秀的甜瓜一共有100多个,其中颜值最高身材最完美的一个瓜以将近23000美元被售出世界上最胖的3个人,最重的达到了1450斤,洗澡都费劲!第三名罗莎莉布拉德福德生活在美国佛州,体重最高达1090斤,身体足有2。43米宽,洗一次澡至少需要90分钟,后来她努力坚持减肥,减去了454公斤。因减肥造成并发症,最后去世。第二名nenOTC去中心化场外交易所黑马出现,锁定赛道独角兽地位比特币的诞生是有很强的动机的。在08年金融危机以前,人们没如此明显地意识到,德高众望手握巨资的权威机构却总是在偷偷挪用用户的私人资产。也正是全球四大银行之一的雷曼兄弟银行怦然倒下,世界上最贵的手机,价值一个亿,可买普通iphone5二万多台世界上最贵的手机,价值一个亿细瞅清楚了,就是这款钻石版iphone5,据说这家伙是由香港一位神秘富豪专门定制的,花费9个月时间手工制作而成,为了凸显它的奢侈与独一无二,这位神秘富豪什么是欧代?CE认证为什么要提供欧代协议?什么是欧代?欧代即欧盟授权代表,也可以叫欧洲代表。欧盟法规要求以及欧盟授权代表的作用1按照欧盟法规要求,申请CE认证时必须要有欧代协议才能申请CE的。2按照欧盟法规要求,获得CE认建行汕头市分行搭建三方合作桥梁,奏响数字住建强音近日,由建行汕头市分行携手当地住建局等部门推动特区数字住房(粤安居)一体化平台系统建设,深度践行我为群众办实事,助力汕头成为全省唯一一个通过省级总对总对接方式实现与自然资源厅数据共
国民神车不香了?微型电动车市场增速承压欧拉黑猫白猫停单宏光MINIEV销售乏力连日来,上游新闻记者走访市场发现,曾一度成为各大车企眼中香饽饽的A00级微型电动车,正在逐步降温。就连曾超越特斯拉的国民神车宏光MINIEV过几天的苹果春季发布会最值得期待的不应是iPhone不出意外的话,3月份的某个周二(理论上是3月8日),苹果将会举行2022年的首场发布会,也就是我们通常所说的苹果春季发布会。与秋季发布会主要发布新一代旗舰iPhone不同,春季发布家用电器老是坏,不是这毛病就是那毛病,低收入怎么活?很多家电用久了就会出现这样或那样的问题,这很正常,即便是品牌产品也不例外。我就是为省钱,而又喜欢自己捣鼓捣鼓,因此也就经常自己先动手检查修理,实在无能力搞定,再出钱请专业人士来处理第四大运营商即将上线,移动联通电信迎来劲敌,你会转网吗?怕是先喜后忧,以前移动信号强用移动,现在费用上吃不消了。现在跑联通来了,用了一个月五十元上下,还不限速只玩头条所有视频不敢用,所有其它软件不敢开。如果每月都在50元上下就不改嫁了,儿子秋天上学,学校让买i7的电脑,学的是动漫制作专业,拯救者y7000p怎么样,值得买吗?先说结论联想拯救者y7000p值得大学新生买,但目前这个节点我更推荐12代酷睿版本,性能提升很多,外观设计也更有味儿!y7000p即使电竞本也是性能本联想的拯救者系列虽然定位是电竞印度公司是怎么把巴菲特按在地上摩擦的?视频已发布,为保护版权,发出视频文案。点击此处观看视频巴菲特的印度之殇印度今年可算是把巴菲特按在地上侮辱啊,光这个公司(paytm),就至少坑走人巴大爷130亿卢比(差不多10亿左三星Galaxy系列手机被曝安全漏洞,涉及上亿部设备鞭牛士3月1日消息,据IT之家报道,研究发现,三星已经出货的上亿部Android智能手机存在安全漏洞,攻击者可能利用漏洞从相关设备中获取敏感和加密信息。以色列特拉维夫大学(TelA有哪些被智能手机淘汰的电子产品,你还记得吗?好吧,说一下自己的看法吧!1手柄游戏机90年代,谁要是有一台这个手柄游戏机那是相当的不得了,俄罗斯方块坦克大战等等都是经典游戏。也是在手机出现后被淘汰的。2BB机(传呼机)90年代新华三2亿元中标中国广电5G核心网工程IT云资源池设备采购项目2022年1月29日,中国广播电视网络集团有限公司发布中国广电5G核心网工程IT云资源池设备采购项目招标公告,本项目采购预算总金额为不含税1。9亿元人民币,含税2。13亿元人民币。俄罗斯卢布贬值,电子产品价格暴涨30随着俄乌冲突的家具,近段时间,俄罗斯卢布兑美元和欧元的汇率开始大幅下跌。再加上西方国家开始限制电子产品出口俄罗斯。如今在俄罗斯的电商网站上,很多电子产品的价格正在快速飙升。据俄罗斯阿里巴巴2023届全球校招启动超150类岗位全量开放技术岗占比超602月28日,阿里巴巴正式启动2023届校园招聘,含技术非技术类共超过150类职位面向大学生群体开放。另据消息人士称,阿里巴巴此前一直暗藏的顶尖校招技术人才项目阿里星LAB也极可能会