Hi3516E V300 开启DHCP功能

1. 首先我已经完整编译过一遍osdrv,进入busybox源码目录,执行命令:

make menuconfig

 打开udhcp client功能后保存配置:

 再执行编译,安装命令:

make
make install

编译并安装成功后,在 busybox 源码目录下的 _install 目录下生成以下目录及文件:

再把这些目录以及文件全都拷贝到根文件系统 rootfs_uclibc 目录下面即可。
 

2.在 rootfs_uclibc 目录下的 /usr/share/ 目录里创建 udhcpc 目录,然后在 udhcpc 目录下面创建default.script 文件。udhcpc命令只能去获取到ip,但是不能设置。设置过程是(default.script)脚本来完成的。busybox源码examples/udhcp目录下提供了一个示例脚本simple.script,把其内容复制到default.script文件中即可。脚本内容如下:

#!/bin/sh
# udhcpc script edited by Tim Riker <Tim@Rikers.org>

RESOLV_CONF="/etc/resolv.conf"

[ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; }

NETMASK=""
if command -v ip >/dev/null; then
	[ -n "$subnet" ] && NETMASK="/$subnet"
else
	[ -n "$subnet" ] && NETMASK="netmask $subnet"
fi
BROADCAST="broadcast +"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"

case "$1" in
	deconfig)
		echo "Clearing IP addresses on $interface, upping it"
		if command -v ip >/dev/null; then
			ip -4 addr flush dev $interface
			ip link set dev $interface up
		else
			ifconfig $interface 0.0.0.0
		fi
		;;

	renew|bound)
		echo "Setting IP address $ip on $interface"
		if command -v ip >/dev/null; then
			ip addr add $ip$NETMASK $BROADCAST dev $interface
		else
			ifconfig $interface $ip $NETMASK $BROADCAST
		fi

		if [ -n "$router" ] ; then
			echo "Deleting routers"
			while route del default gw 0.0.0.0 dev $interface ; do
				:
			done

			metric=0
			for i in $router ; do
				echo "Adding router $i"
				if [ "$subnet" = "255.255.255.255" ]; then
	# special case for /32 subnets:
	# /32 instructs kernel to always use routing for all outgoing packets
	# (they can never be sent to local subnet - there is no local subnet for /32).
	# Used in datacenters, avoids the need for private ip-addresses between two hops.
					ip route add $i dev $interface
				fi
				route add default gw $i dev $interface metric $((metric++))
			done
		fi

		# If the file is a symlink somewhere (like /etc/resolv.conf
		# pointing to /run/resolv.conf), make sure things work.
		if test -L "$RESOLV_CONF"; then
			# If it's a dangling symlink, try to create the target.
			test -e "$RESOLV_CONF" || touch "$RESOLV_CONF"
		fi
		realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF")
		echo "Recreating $realconf"
		tmpfile="$realconf-$$"
		> "$tmpfile"
		[ -n "$domain" ] && echo "search $domain" >> "$tmpfile"
		for i in $dns ; do
			echo " Adding DNS server $i"
			echo "nameserver $i" >> "$tmpfile"
		done
		mv "$tmpfile" "$realconf"
		;;
esac

exit 0

3. 板子启动后,执行如下命令即可正常获取到ip了:

ifconfig eth0 up
udhcpc -i eth0 -b

参考了以下博客: 

【海思篇】【Hi3516DV300】五、linux有线网口调试 - CodeAntenna

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在HI3516上实现条形码的扫描功能,您可以按照以下步骤进行操作: 1. 首先,确保HI3516上运行的操作系统已经配置好了相机设备,并且能够正常获取视频流。 2. 下载并安装OpenCV库,您可以从官方网站下载适用于HI3516的OpenCV版本。 3. 使用OpenCV库中的条形码识别功能来实现扫描功能。您可以使用OpenCV中的`cv::BarcodeDetector`类来进行条形码的检测和解码。 ```cpp // 导入OpenCV库 #include <opencv2/opencv.hpp> // 创建条形码检测器 cv::BarcodeDetector barcodeDetector; // 加载图像 cv::Mat image = cv::imread("barcode_image.jpg"); // 检测条形码 std::vector<cv::barcode::Barcode> barcodes; barcodeDetector.detect(image, barcodes); // 解码并显示条形码信息 for (const auto& barcode : barcodes) { std::cout << "Barcode Type: " << cv::barcode::getTypeName(barcode.getType()) << std::endl; std::cout << "Barcode Value: " << barcode.getValue() << std::endl; } ``` 请注意,以上代码仅为示例,您需要根据实际情况进行适当的修改和集成。 4. 将上述代码嵌入到您的HI3516应用程序中,确保能够从相机获取图像并传递给条形码检测器进行扫描。 5. 运行应用程序,通过相机捕获图像,并使用条形码检测器识别和解码图像中的条形码。 请注意,实现条形码扫描功能涉及到相机的图像采集、图像处理和条形码识别等多个方面,具体实现需要根据您的应用场景和需求进行适配和调整。以上提供的是一个基本的框架和示例代码,您可能需要进一步深入研究和了解相关技术,并根据实际情况进行定制开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值