代码编织梦想

编译Hisi的OpenIPC遇到一些奇怪的问题。因为用的已经是很老的板子了,这个仓库也已经很就不维护了,并且上有个包已经找不到了,有些源文件的下载也会遇到一些问题。这里做个记录。

编译过程

参考:https://github.com/OpenIPC/chaos_calmer
这里我使用的ubuntu 18.04。

git clone --depth=1 https://github.com/OpenIPC/chaos_calmer.git OpenIPC
cd OpenIPC
./Project_OpenIPC.sh update
./Project_OpenIPC.sh 18ev200_zftlab_rotek

照着上面的两条命令执行。因为我使用的也是18ev200,所以就跟着它的参数直接用了。如果是其他型号,直接参考脚本里面的设置就行了。

因为需要在外网下一些软件包,所以需要使用代理来执行这两个命令。

proxychains ./Project_OpenIPC.sh update
proxychains ./Project_OpenIPC.sh 18ev200_zftlab_rotek

脚本默认使用多线程编译,由于中途会遇到一些错误,出错后,直接根据提示,重新运行proxychains make V=s 查看具体错误就行了。一般遇到.tar.xz或者tar.bz2的包下载不下来的情况,直接重试即可。有的包又不能挂代理,否则也下不下来,如果遇到下载不下来的包,一般选择三种方式:

  • 使用代理(proxychains)来进行下载。
  • 不使用代理进行下载。(像这个链接https://sources.openwrt.org/libgcrypt-1.6.1.tar.bz2我使用代理就下载不下来,只能关闭代理进行下载。
  • 另外,我们可以直接使用wget或者浏览器自己下载那些下不下来的包,然后放到dl目录下即可。

Tips: 当如果我们需要删掉整个工程目录,一定要先将dl目录进行备份,重新clone的目录,直接复制我们备份的dl目录进去即可,这样可以避免重复下载浪费时间。

另外还有一个非常严重的下载问题,困扰了我很久。就是上游的包已经没了,浏览器直接输入原来的链接,已经找到不到了。我通过翻github仓库,找到了该作者相关的一个仓库,并自己根据名字来进行打包这个仓库,放到dl目录下。但是运行make依然会去重新下载这个包: majestic.hi3516cv200.master.tar.bz2(克隆这个https://github.com/OpenIPC/majestic仓库,并重新打包成要求的名字)。
放弃了这个方法后,我通过直接修改Makefile的方式,屏蔽掉了这个编译,没想到既然成功,这个包看打印应该是生成osdrv2.ipc相关的东西。用不到不编译也就没关系了。直接注释掉feeds/glutinium/hisi-osdrv2/Makefile中150左右位置的内容,并重新编译即可。

define Package/$(PKG_NAME)-majestic/install
     # wget -v -O $(DL_DIR)/majestic.hi3516cv200.master.tar.bz2 http://openipc.s3-eu-west-1.amazonaws.com/    majestic.hi3516cv200.master.tar.bz2
     # tar -C $(PKG_BUILD_DIR) -xvjf $(DL_DIR)/majestic.hi3516cv200.master.tar.bz2
     # $(INSTALL_DIR) $(1)/etc
     # $(CP) $(PKG_BUILD_DIR)/majestic.yaml $(1)/etc/
     # $(INSTALL_DIR) $(1)/usr/bin
     # $(CP) $(PKG_BUILD_DIR)/majestic $(1)/usr/bin/
 endef

编译完成

编译完成后的输出。

Generating index for package ./luci-lib-ip_git-18.097.75958-5537d68-1_hi35xx.ipk
Generating index for package ./luci-lib-nixio_git-18.097.75958-5537d68-1_hi35xx.ipk
Generating index for package ./luci-mod-admin-full_git-18.097.75958-5537d68-1_hi35xx.ipk
Generating index for package ./luci-proto-3g_git-18.097.75958-5537d68-1_all.ipk
Generating index for package ./luci-proto-ppp_git-18.097.75958-5537d68-1_all.ipk
Generating index for package ./luci-theme-bootstrap_git-18.097.75958-5537d68-1_all.ipk
Generating index for package ./luci_git-18.097.75958-5537d68-1_all.ipk
Signing package index...
make[2]: Leaving directory '/media/linuxdata/OpenIPC'
make[1]: Leaving directory '/media/linuxdata/OpenIPC'

会在bin/hi35xx下出现我们需要的固件。

duapple@duapple-vm:/media/linuxdata/OpenIPC/bin/hi35xx$ ls
md5sums                                              openwrt-hi35xx-18ev200-default-squashfs-sysupgrade.bin
openwrt-hi35xx-18ev200-autoupdate-kernel.img         openwrt-hi35xx-18ev200-default-uImage
openwrt-hi35xx-18ev200-autoupdate-rootfs.img         openwrt-hi35xx-18ev200-u-boot.bin
openwrt-hi35xx-18ev200-autoupdate-uboot.img          packages
openwrt-hi35xx-18ev200-default-root.squashfs         sha256sums
openwrt-hi35xx-18ev200-default-squashfs-factory.bin  uboot-hi35xx-18ev200

这是直接烧录openwrt-hi35xx-18ev200-default-root.squashfshi35xx-18ev200-default-uImage即可。

烧录:

mw.b 82000000 ff 300000; tftp 82000000 openwrt-hi35xx-18ev200-default-uImage; sf probe 0; sf erase 100000 300000; sf write 82000000 100000 300000
mw.b 82000000 ff C00000; tftp 0x82000000 openwrt-hi35xx-18ev200-default-root.squashfs; sf probe 0; sf erase 400000 C00000; sf write 82000000 400000 C00000
reset

如果跟文件系统的类型没有设置为squashfs,修改bootarg:

setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=squashfs mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
sa

启动:

Please press Enter to activate this console.


BusyBox v1.23.2 (2022-09-21 23:51:32 CST) built-in shell (ash)


 ___                  _  ___  ___
/   \ ___  ___  _  _ | ||   \/  _|
| | ||   \/ _ \| \| || || | || |
| | || | |  __/| \\ || ||  _/| |_
\___/|  _/\___||_|\_||_||_|  \___|.ORG    v21.04.10.2
     |_|


OpenIPC is asking for your help to support development cost and long-term maintenance
of what we believe will serve a fundamental role in the advancement of a stable, flexible
and most importantly, Open IP Network Camera Framework for users worldwide.

Your contribution will help us advance development proposals forward, and interact with
the community on a regular basis.

  https://openipc.org/sponsor/



root@OpenIPC:/#

还存在的问题

就是修改kernel_menuconfig,无法保存的问题。修改后,直接会导致,原来的配置也没了,重新编译整个工程,命令行直接让我重新配内核。暂时还不知道怎么解决,后面有时间再研究研究。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/duapple/article/details/126984159

Hi3518重生记(一)openipc下的minihttp服务-爱代码爱编程

openipc是github上一个基于HI35XX系列开发的openwrt系统。 openipc里面最重要的一个应用是minihttp,他承载了这个系统的灵魂——推送视频流服务。 但是根据群里面的小伙伴反应,这个服务容易卡死,而且是随机出现的。为了研究其原因,首先需要分析这个应用。 (一)SDK版本描述 openipc是根据官方SDK开发的。 o

GDK7+NanoCode调试学习系列1--环境搭建-爱代码爱编程

本系列学习主要以GDK7为目标机,以NanoCode为调试工具来学习调试linux,windows内核,以及应用程序。 介绍 从高端调试(http://advdbg.org/gdk/)注册并入手GDK7机器,从NanoCode官网(https://www.nanocode.cn/#/download)下载了NanoCode。 调试主机使用win10,

linux open firmware,Firmware/Open-爱代码爱编程

There are number of open firmware projects, some of which are listed below. While all the firmware below is open source, some of it uses read-only firmware embedded in ROM chip

Nano Code中DCI路径的设置方法-爱代码爱编程

1. 未安装Intel System Studio 所需文件可以在下方的百度网盘链接中下载: 链接: https://pan.baidu.com/s/1UdOn7eIG5W-3mN9PphpnWg 提取码: 6hhe 复制这段内容后打开百度网盘手机App,操作更方便哦 1.安装DCI设备的USB驱动dcidrv.msi。 2.把openipc.

无法修改表 超时时间已到.在操作完成之前超时时间已过或服务器未响应,01-正文...-爱代码爱编程

通过本功能可以查看HDM所提供服务的详细信息。 ·     R2700 G3、R2900 G3、R4300 G3、R4400 G3、R4700 G3、R4900 G3、R5300 G3和R6700 G3支持Remote-XDP服务。 ·     仅R4950 G5和R5500 G5支持iHDT服务。 1. 操作步骤 (1)     单击[远

基于树莓派的WireGuard安装配置与使用-爱代码爱编程

基于树莓派的WireGuard安装配置与使用 关于WireGuard 简介 WireGuard 是新一代的虚拟专用网协议,相比于 IPSec 和 OpenVPN 等软件,特点是简单、安全、高效,源码总共不到四千行代码。由于过于优秀,已经被吸收进了 Linux 5.6+ 的内核中。 工作原理 WireGuard 以 UDP 实现,但是运行在第三层