瑞昱RTL8382交换机软件开发方案遇到的问题

说明:在移植交换机软件到rtk系列交换机上遇到的一些问题总结在此留一个备份

1、在原厂提供的SDK中会报错mknod时会出现权限不够的问题

解决方法:修改kernel中编译nod的makefile,在其中加入权限

2、uboot是2011年的古董,在使用make envtools命令后在env文件夹下没有生成lib.a那么在程序中调用env方面的函数是不行的

解决方法:下载一个2018的uboot使用make envtools命令会生成lib.a但是这个库直接使用是不行的,因为通过查看源代码会发现访问fw_env.config这个文件的实现方法,2018和2011有一些不同,因为去修改2011会涉及太多的函数,直接修改2018的函数然后重新make envtools就可以了

3、在根目录下通过make rtusr-so命令生成动态库,当然前提是打开了diag否则会报错将生成的库放入文件系统的lib中,那么就可以在程序中调用了,当然也需要修改程序的makefile使其识别到该库

4、文件系统中没有fstab,自己自行创建该文件,然后在启动shell中使用mount -a挂载

仅供参考

# <file system>	<mount pt>	<type>	<options>	<dump>	<pass>
/dev/root	/		ext2	rw,noauto	0	1
proc		/proc		proc	defaults	0	0
devpts		/dev/pts	devpts	defaults,gid=5,mode=620,ptmxmode=0666	0	0
tmpfs		/dev/shm	tmpfs	mode=0777	0	0
tmpfs		/tmp		tmpfs	mode=1777	0	0
tmpfs		/run		tmpfs	mode=0755,nosuid,nodev	0	0
sysfs		/sys		sysfs	defaults	0	0
/dev/mtdblock3 /data           jffs2  defaults        0       0
#/dev/mtdblock2 /var/lock       jffs2  defaults        0       0

启动shell(rc文件)仅供参考

#!/bin/sh

#
# create essential directory
#
mkdir /var/empty
mkdir /dev/pts
mkdir /dev/shm

#
# mount process
#
mount -t devpts devpts /dev/pts
mount -t proc proc /proc
#mount -t jffs2 -o rw,sync /dev/mtdblock3 /mnt




echo "5 4 1 7" > /proc/sys/kernel/printk

#
# insert kernel module if exist
# default path is /lib/modules/X.X.XX/kernel
#
if [ -d "/lib/modules/X.X.XX/kernel" ]; then
cd /lib/modules/X.X.XX/kernel
fi

cat /proc/meminfo > /tmp/mem_log_rtsdk_start

RESULT=1
if [ -f "drivers/net/switch/rtcore/rtcore.ko" ]; then
	insmod drivers/net/switch/rtcore/rtcore.ko
	RESULT=$?
else
    if [ -f "/lib/modules/rtcore.ko" ]; then
    	insmod /lib/modules/rtcore.ko
    	RESULT=$?
    fi
fi

if [ $RESULT -eq 0 ] && [ -f "drivers/net/switch/rtk/rtk.ko" ]; then
	insmod drivers/net/switch/rtk/rtk.ko
	RESULT=$?
else
    if [ $RESULT -eq 0 ] && [ -f "/lib/modules/rtk.ko" ]; then
    	insmod /lib/modules/rtk.ko
    	RESULT=$?
    fi
fi

if [ $RESULT -eq 0 ] && [ -f "drivers/net/switch/rtnic/rtnic.ko" ]; then
    insmod drivers/net/switch/rtnic/rtnic.ko
	RESULT=$?
else
    if [ $RESULT -eq 0 ] && [ -f "/lib/modules/rtnic.ko" ]; then
        insmod /lib/modules/rtnic.ko
    	RESULT=$?
    fi
fi

if [ $RESULT -eq 0 ] && [ -f "/lib/model/model.ko" ]; then
	insmod /lib/model/model.ko
	RESULT=$?
fi

if [ $RESULT -eq 0 ] && [ -f "net/switch/rtdrv/rtdrv.ko" ]; then
	insmod net/switch/rtdrv/rtdrv.ko
	RESULT=$?
else
    if [ $RESULT -eq 0 ] && [ -f "/lib/modules/rtdrv.ko" ]; then
        insmod /lib/modules/rtdrv.ko
    	RESULT=$?
    fi
fi

if [ $RESULT -eq 0 ] && [ -f "/lib/modules/rise.ko" ]; then
	insmod /lib/modules/rise.ko
	RESULT=$?
fi

if [ -f "/lib/modules/rlapp.ko" ]; then
	insmod /lib/modules/rlapp.ko
	RESULT=$?
fi

cd /


cat /proc/meminfo > /tmp/mem_log_rtsdk_finish


mount -a
#
# network interface configuration
#
# print logo
clear
uname -nrsv
cat /etc/motd

ifconfig lo 127.0.0.1
route add -net 127.0.0.0 netmask 255.255.255.0 lo

ifconfig eth0 192.168.1.1

#
# start application
#
if [ $RESULT -eq 0 ] && [ -f "/bin/switch" ]; then
	switch
fi

5、内核没有使能jffs2文件支持,需要手动在内核中启用,如果没有这个无法挂载和访问它给的cfg和log分区那么就无法写入和读取配置了,重启之后配置就丢失了,注意不要和File systems中的JFS filesystem support弄混了,它在Miscellaneous filesystems中。

6、当然还少不了tmpfs的支持了,在kernel中开启 File systems > Pseudo filesystems

7、必须开启MTD(memory technology device support)中的caching block device access to MTD支持否则在升级的时候会报错。

ps:由于使用不了turnkey命令那么busybox只能手动编写config文件,一个是defconfig一个是mkconfig,然后删除.config文件才能将功能启用,比如sync,route等等命令的启用,当然还有一些更恶心的东西,比如hwclock命令你在busybox中启用了但是会无法通过编译,这玩意还要在内核中启用ptp和rtc才行

总结:rtk搞的这套古董,uboot是2011年的,给的内核也是古董,什么东西都没有还不如直接放到buildroot里面,搭建这破环境都用了我半个月,能用了之后一看api也是古董,插拔反应还这么慢,真的比不上marvell和broadcom半根毛,也就在低端玩玩了凸m凸

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
瑞昱(Realtek)是一家专业的集成电路设计与生产公司,其产品涵盖了广泛的领域,包括通信、嵌入式系统、多媒体和网络等。在这些领域中,瑞昱使用了phy芯片来实现不同的功能。 phy芯片是物理层接口芯片的简称,它主要用于将数字信号转换为模拟信号,或将模拟信号转换为数字信号。在通信领域中,phy芯片通常用于实现各种接口标准,如以太网、USB、HDMI等。它们能够将数字数据转换为适合传输的模拟信号,并确保数据的稳定传输。 在网络领域中,瑞昱的phy芯片被广泛应用于以太网交换机、路由器等设备中。这些芯片能够实现高速数据传输和接收,确保网络的稳定性和可靠性。此外,瑞昱的phy芯片还具有低功耗和高集成度的特点,使得设备具有更好的能源效率和更小的体积。 在嵌入式系统领域,phy芯片也是非常重要的组成部分。它们能够实现不同外设与主控芯片的连接,如LCD显示屏、摄像头、触摸屏等。通过使用phy芯片,这些外设可以与主控芯片进行高效的数据传输,从而提高整个系统的性能和稳定性。 瑞昱不仅提供phy芯片的设计与生产,还提供相关的驱动程序和技术支持。他们的phy芯片广泛应用于各种消费电子产品和工业设备中,包括计算机、手机、电视、汽车等。通过持续的创新和优化,瑞昱的phy芯片能够提供更高的数据传输速度、更低的功耗和更好的兼容性,满足不同领域的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值