当前位置: 首页 > 科技观察

Harmonyos移植RaspberryPi(上)搭建环境下载源码

时间:2023-03-12 17:20:51 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz项目最新更新,可以查看代码仓库https://gitee.com/liangzili/harmony-raspberry1。和谐树莓派源码推荐在Ubuntu20.04下构建编译。Windows下会出现各种奇怪的问题,不建议使用。1.1、VirtualBox虚拟机安装VirtualBox官网下载地址:https://www.virtualbox.org/Ubuntu20.04官网下载地址:https://ubuntu.com/download/desktopVirtualBox和Ubuntu的安装使用将不能展开是的,百度有很多资料。1.2.把sh改成bashls-l/bin/sh#如果显示为“/bin/sh->bash”就正常,否则请修改如下:sudodpkg-reconfiguredash#然后选择no1.3,安装打包toolmkfs.vfatmtoolssudoapt-getinstalldosfstoolsmtools#官??方要求安装2个工具sudoapt-getinstallzip#官方文档没有写,但是rootfs过程需要sudoapt-getinstallpython3-distutils#官方文档没有写,但是构建过程需要1.4,下载安装编译工具gnninjallvmhc-genhc-gen:鸿蒙驱动hdf框架,用于生成鸿蒙驱动配置对应的文件#下载gn/ninja/LLVM/hc-gen包:URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compilerwget$URL_PREFIX/gn/1523/linux/gn.1523.tarwget$URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tarwget$URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tarwget$URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tarwget$URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz#【可选】wifiiot等编译riscv所需#解压gn/ninja/LLM/hc-gen包:tar-C~/-xvfgn.1523.tartar-C~/-xvfninja.1.9.0.tartar-C~/-xvfllvm-linux-9.0.0-34042.tartar-C~/-xvfhc-gen-0.65-linux.tartar-C~/-xvfgcc_riscv32-linux-7.3.0.tar.gz#【可选】编译riscv需要,如wifiiot#添加到~/.bashrcgn/ninja/LLVM/hc-gen路径配置:cat<>~/.bashrcexportPATH=~/build_tools/gn:\$PATHexportPATH=~/build_tools/ninja:\$PATHexportPATH=~/build_tools/llvm/bin:\$PATHexportPATH=~/build_tools/hc-gen:\$PATH#exportPATH=~/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin:\$PATHexportPATH=~/gcc_riscv32/bin:\$PATH#【可选】编译riscv需要,如wifiiot#exportPATH=~/.local/bin:\$PATHEOF#有效环境变量source~/.bashrc1.5,安装python3.8和pip编译鸿蒙源码hi3861目标平台你需要使用scons。默认安装的scons版本要求python版本>=3.7:如果是ubuntu20.04,因为默认的python是3.8,刚好满足要求。只需要安装pip,直接进入第6步即可sudoapt-getinstallpython3-pip注意:如果pip下载慢,配置pip包下载源,加快pip包国内安装:mkdir~/.pip/cat<~/.pip/pip.conf[global]index-url=https://mirrors.huaweicloud.com/repository/pypi/simpletrusted-host=mirrors.huaweicloud.comtimeout=120EOFb,如果是其他版本,比如ubuntu18.04,默认Python3版本3.6,必须先安装python3.8sudoapt-getinstallpython3.8python3-pipsudoapt-getinstallpython3-pip安装完成后需要将默认python切换为3.8。比较麻烦的是多个python版本的管理。通常有两种方式:方案一:使用virtualenv管理,分别source对应的active脚本切换当前shell会话的默认python版本。Virtualenv管理多个python运行环境。如果virtualenv不适用,pipinstall和sudopipinstall的包会分别放在用户家目录和系统目录下安装virtualenv:pip3installvirtualenvsudoaptinstallpython3-virtualenv#create使用python3.8作为默认的python解释器virtualenvmkdir~/Harmony/venv&&virtualenv-ppython3.8~/Harmony/venv#激活virtualenv,激活的pip3install会将包文件缓存到对应的子目录source~/harmonyos/venv/bin/activatesource~/Harmony/.venv/bin/activate方案2:使用update-alternatives管理,切换全局Python脚本配置(不推荐,用完需要切换回来,否则会影响apt等依赖python3的包使用);update-alternatives,即黛比ian是一个管理多版本软件的工具。不仅适用于Python,也适用于Java等需要多版本共存的软件。它与virtualenv等虚拟环境的不同之处在于update-alternatives管理系统级软件版本。virtualenv管理当前用户下的虚拟环境。1.6.确定python环境变量方案一:使用[ln-s]确认安装了Python,运行以下命令将python路径链接到“/usr/bin/python”。whichpython3.8#查看python3.8的安装位置输出:/usr/bin/python3.8#比如我的安装目录cd/usr/bin#进入python目录sudormpython#删除pythonsudoln-s/usr/local/bin/python3.8python#链接python到python3.8python--version方案二:sudoapt-getinstallpython3-venv#安装venv虚拟环境python3-mvenv.venv#建议进入项目根目录执行这条命令source.venv/bin/activate#进入虚拟环境其他工具安装#安装setuptools和kconfiglibpip3installsetuptoolskconfiglib#安装编译hi3861需要的pip包pip3installsconsecdsapycryptodomepip3install--upgrade--ignore-installedsix2.下载源码后Ubuntu环境搭建完成,开始下载源码。2.1.配置gitsudoaptinstallgitgitconfig--globaluser.name"liangzili"gitconfig--globaluser.email"liangzili@qq.com"gitconfig--globalcredential.helperstore2.2,安装码云repo工具,可以执行如下命令sudoaptinstallcurlcurlhttps://gitee.com/oschina/repo/raw/fork_flow/repo-py3>/usr/local/bin/repochmoda+x/usr/local/bin/repo#设置repo文件a+x表示所有用户都可以执行pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplerequests2.3,下载源码repo是一个python脚本,用于下载多个git库,repo用法参考:https://blog.csdn.net/nwpushuai/article/details/78778602repoinit-u#指定远程git清单库的URL。manifests库是整个项目的一个列表,通常包括文件default.xml-b#在manifest.xml文件中指定一个版本,也就是俗称的“branch”运行命令后,新建一个.repo子目录将在当前目录中创建。reposync-j12#启用多线程同步操作,会加快sync命令的执行速度。sync-no-repo-verify默认并发使用4个线程:下载repo库时,会检查repo的源代码。当使用–repo-url指定第三方repo库时,可能会检查失败,可以配合使用该参数强制不检查-c,–current-branch:只同步指定的远程分支。默认情况下,sync将同步所有远程分支。当远程分支较多时,下载的代码量会很大。使用该参数可以减少下载时间,节省本地磁盘空间-d,--detach:从当前本地分支脱离,切换到manifest.xml中设置的分支。在实际操作中,这个参数非常有用。我们在第一次同步代码的时候,往往会切换到dev分支进行开发。如果不带此参数使用sync,会触发本地dev分支与manifest设置的远程分支合并,很可能会导致sync失败sync-c#onlysynchronizethespecifiedremotebranchrepoinit-uhttps://gitee.com/openharmony/manifest.git-bmaster--no-repo-verifyreposync-c#以后每天只需要执行这条命令就可以同步远程仓库的修改了。前期可以先锁定OpenHarmony-1.0版本,避免频繁升级。问题,树莓派的移植是在OpenHarmony-1.0repoinit-uhttps://gitee.com/openharmony/manifest.git-bOpenHarmony-1.0reposync-c-j122.4的分支上进行的,编译测试可以先执行官方编译命令,测试编译环境是否正常。编译完成后会在主目录下生成一个out文件夹-bdebug用于构建debug版本。如果没有这个参数,普通版是无法进入shell的SD卡启动内核,可以使用树莓派自带的BootLoader直接启动内核,但是这样不方便我们调试代码。SD卡需要经常插拔。所以我先通过BootLoader加载u-boot,然后通过u-boot的TFTP直接加载内核镜像到内存,这样调试的时候就不用频繁插拔SD卡了。调试结束后,将镜像文件复制到SD卡,启动内核。TFTP启动内核u-boot环境变量设置:setenvbootcmd"tftp80000OHOS_Image.bin;tftp80000OHOS_Image.bin;tftp80000OHOS_Image.bin;go80000"SD卡启动内核u-boot环境变量设置:setenvbootcmd"fatloadmmc0:1100000liteos.bin;fatloadmmc0:1100000bin;mw.l0x10100000ffffffff1000000;fatloadmmc0:110100000rootfs.jffs2;go100000-10100000”3.2。树莓派2的启动文件OHOS_image_1.0里面有我编译好的鸿蒙镜像,可以直接使用。详细的编译过程请参考后续章节。=======完整内容======#2020收藏-开发板#鸿蒙移植树莓派(上)搭建环境下载源码#2020收藏-开发板#鸿蒙移植树莓派(上)中)添加单板#2020颜文-开发板#鸿蒙移植树莓派(下)修改源码?版权归作者及鸿蒙技术社区所有。如需转载请注明出处,否则将追究法律责任。了解更多请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz