瑞昱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
    评论
RTL9047A 为车用乙太网single chip 交换机方案,如下图port0~port3 总共提供4ports 100BASE-T1,不用外挂PHY可节省cost 及PCB空间; port4为 selection port可选择设定100BASE-T1或SGMII,其SGMII个外接CPU或对接相同型号switch做cascade扩充; port5为 selection port可选择设定传统100base-TX FE PHY, SGMII或 RGMII/MII/RMII,其100base-TX 界面作为车载Diagnostic界面; port6为RGMII/MII/RMII 界面,可用来外接CPU或扩充网路界面等应用。 RTL9047A相较于NXP SJA1105 多四口internal 100base-T1 PHY,可节省车厂bom cost并增加PCB layout设计弹性。 RTL9047AA提供的100Base-T1符合标准是IEEE 802.3bw规范,它具有100 Mb / s的速率,通过双绞线(T1)进行全双工通信。 能够支持线材至少15米,而相较于车用传统LIN、CAN 界面,可以提高更好的频宽,并能和车用交换器及资料中心做连接,达到多个节点装置互相通信,建构各种不同所需的网路拓朴 ,此外,具有低辐射,高RF抗扰度和更长距离通信的能力。 根据 Open Alliance TC1标准规范,车载乙太网路测试项目EMC、IOP、 PCS 、PMA、PHYC, RTL9047AA 已在Open Alliance认证实验室通过以上所有测项,并可提供测试报告给车厂评估. (一)友尚FAE能协助提供(申请)开发者需要的参考文件及软件包,如下; 1.RTL9047AA-VC_DataSheet 2.RTL9047AA-VC_Reference_Schematic 3.RTL904Xxx_Series_Demo_Board_User_Guide(让开发者快速理解switch应用及操作) 4.RTL904Xxx-VC_Schematic_Checklist(方便开发者检视硬体设计) 5.RTL904Xxx_Series_SDK_API_Programming_Guide(软件开发用) 6.Realtek Automotive Switch Tool(turnkey tool,全面UI界面设定产出image,节省软件开发effort) (二)友尚FAE可协助开发者硬件线路及layout review (三)友尚FAE可协助软体 API整合开发,switch tool应用及网管整合协助 (四)请车厂开发单位在大大购平台购买EVB board后,并向大大通或代理商(友尚)申请porting和网关sample code,节省开发时间。 RTL9047AA提供SPI slave\SMI slave\I2C slave界面接到SOC,让开发者将RTL9047AA API code 包入CPU系统后可以动态设定功能,也可节省FLASH元件cost。 开发者也可直接套用API里的sample code造出I2C\SMI或SPI来porting RTL9047AA,ex:src/rtk_i2c.c 、src/rtk_mdc.c 、 src/rtk_spi.c RTL9047AA API code,可让开发者动态可调性的客制化设定网管必备功能,例如以下范例: 1.Port-Base VLAN feature,以下设定将Port0~Port2设为Group VLAN1,将Port3~Port5设为Group VLAN2,形成不同VLAN Group之间无法传递资料,要在同一个VLAN Group才能收送资料。 /* initialize VLAN */ rtk_vlan_init (); /* all the ports are in the default VLAN 1 after VLAN is initialized. Modify it as follows VLAN1 member: port0, port1, port2; VLAN2 member: port3, port4, port5 */ rtk_portmask_t mbrmsk, untagmsk; rtk_vlan_t VLAN1, VLAN2; VLAN1 = 100; VLAN2 = 200; mbrmsk.bits[0]=0x07; /* port 0~ port 2*/ untagmsk.bits[0]=0x3F; rtk_vlan_set(VLAN1, mbrmsk, untagmsk, 0); mbrmsk.bits[0]=0x38; /* port 3~

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值