Yuhang Zheng
FCU2303配置VLAN和网桥的示例

背景

在FCU2303的开发板上,有八个千兆网,分别是fm1-mac1,fm1-mac2,fm1-mac3,fm1-mac4,fm1-mac5,fm1-mac6,fm1-mac9,fm1-mac10,还有一个5G模块eth0。

客户有一个需求是想在这个板子上划分出两个VLAN(Virtual Local Area Network,中文名为”虚拟局域网”,工作在OSI参考模型的第2层和第3层。),一个是将这八个千兆网口划为一个VLAN,VLANID暂时定为100;另一个是将这八个网口中的任一网口和5G模块划为一个VLAN,VLANID暂时定为200,划分示意图如下图所示:

VLAN

这样的话,VLAN100中的设备就无法直接访问5G模块的流量,只能先将数据转发到fm1-mac1网口上,然后fm1-mac1再将数据转发到5G模块eth0。因为fm1-mac1是既在VLAN100中,又在VLAN200中,所以它充当了连接两个VLAN的桥梁,这时候如果在fm1-mac1中外接一台电脑用于监控流通此网口的流量的话,就实现了监听VLAN100中其他网口通过5G模块上网的数据内容。

wm8960音频工作不正常的问题排查

背景:

之前写过两个文章来记录了wm8960音频播放出现砰砰声的问题的原因和其对应的解决方法。后来为了简单起见就选择了将MCLK时钟改为12MHz的方法,也解决了客户的问题。昨天生产部门又反馈新一批的板子又有大批量出现音频播放声音不正常的现象,不同于上次出现的砰砰声,这次是播放时直接出现嗞啦的声音,而且几秒钟的音频文件要播放几分钟才播放完毕,看来又出现新的问题了。

排查过程:

出现这个现象,可以很确定的判断大概率是音频芯片工作不正常的问题,为了验证想法,我们可以拿示波器量一下wm8960音频芯片的BCLK和LRC的时钟频率。原理图的引脚如下:(PS:芯片的引脚顺序是从芯片上的小圆点开始是第一脚,逆时针方向数)

image-20210511143826708

测量发现BCLK有11MHz之高,LRC时钟也很不正常。结合WM8960的时钟分频图来看,这个时钟很不对。

Linux platform平台总线、平台设备、平台驱动

平台总线(platform_bus)的需求来源?

随着soc的升级,S3C2440->S3C6410->S5PV210->4412,以前的程序就得重新写一遍,做着大量的重复工作,
人们为了提高效率,发现控制器的操作逻辑(方法)是一样的,只有寄存器地址不一样,如果将与硬件有关的
代码(platform_device)和驱动代码(platform_driver)分开,升级soc后,因为驱动方式一样,
只需要修改与硬件有关的代码就可以,实现一个驱动控制多个设备。

平台(platform)总线是一种虚拟的总线,在 /sys/bus/platform 目录可以看到。
平台总线三要素:平台总线、平台设备、平台驱动
平台总线原则:先分离,后合并

从命令行重置USB设备

问题描述

是否可以重置USB设备的连接,而无需从PC断开/连接?

具体来说,我的设备是数码相机。我正在使用gphoto2,但最近我收到“设备读取错误”,所以我想尝试执行连接的software-reset。

从我可以告诉的是,没有为相机加载内核模块。唯一与外表相关的是usbhid

最佳解决办法

将以下内容保存为usbreset.c

工具网站

在线画图工具

首先就是画图工具,我想了一下,程序员经常接触的无非也就是流程图、思维导图、原型图、UML图、网络拓扑图、组织结构图等等这些。

下面这三个在线画图网站我想应该足够了,其中那个processon是我用得最多的,历史文章中几乎所有相关的图形都是用它绘制,然后导出图片的。


在线开发辅助工具

在做开发和写代码的过程中,经常要用到的辅助工具其实还挺多,这段时间我重点就在整理归纳这个。

以我个人的情况为例,日常开发经常会用到一些辅助工具我总结为8大类,包括:编解码工具、转换工具、正则工具、编译工具、网络工具、格式化工具、可视化工具、在线生成器、以及其他工具等等。

OpenWRT源码目录汇总

backports概念

Backport的含义是”向后移植”,就是将软件新版本的某些功能移植到旧版本上来,这就称为backport。
Debian向来以稳定性著称,所以就存在一个问题,官方源分发的软件版本比软件本身的版本总是要慢不少,所以就有了 backports 源。 backports 主要从 testing 源,部分安全更新从unstable源重新编译包,使这些包不依赖于新版本的库就可以在 debian 的 stable 发行版上面运行。所以 backports 是 stable 和 testing 的一个折衷。

backports源码压缩包位置:

dl/backports-5.10.16-1.tar.xz

backport的patch目录:

target/linux/generic/backport-5.4/020-backport_netfilter_rtcache.patch

backport源码目录(已经打完了patch):

build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/backports-5.10.16-1

linux内核源码压缩包位置:

dl/linux-5.4.111.tar.xz

linux内核的patch目录:

target/linux/layerscape/patches-5.4/

linux内核使用的config文件:

target/linux/layerscape/armv8_64b/config-5.4

linux内核的源码目录(已经打完了patch):

build_dir/target-aarch64_generic_musl/linux-layerscape_armv8_64b/linux-5.4.111
OpenWRT编译报错信息汇总

报错信息:

Configuring luci-i18n-s-s-libev-zh-cn.
Configuring luci-i18n-firewall-zh-cn.
Configuring ppp-mod-pppoe.
Collected errors:
* check_data_file_clashes: Package libustream-openssl wants to install file /home/shixiaofeng/source/build_dir/target-mipsel_24kc_musl/root-ramips/lib/libustream-ssl.so
        But that file is already provided by package  * libustream-mbedtls
* opkg_install_cmd: Cannot install package libustream-openssl.
package/Makefile:64: recipe for target 'package/install' failed
make[2]: *** [package/install] Error 255
make[2]: Leaving directory '/home/shixiaofeng/source'
package/Makefile:106: recipe for target '/home/shixiaofeng/source/staging_dir/target-mipsel_24kc_musl/stamp/.package_install' failed
make[1]: *** [/home/shixiaofeng/source/staging_dir/target-mipsel_24kc_musl/stamp/.package_install] Error 2
make[1]: Leaving directory '/home/shixiaofeng/source'
/home/shixiaofeng/source/include/toplevel.mk:199: recipe for target 'world' failed
make: *** [world] Error 2

解决方法:

在make menuconfig进行配置编译选项中,Libraries  --->下面,libustream-openssl和libustream-mbedtls中间去掉一个。
在make menuconfig进行配置编译选项中,LuCI->Collection下的libustream-mbedtls和luci-ssl-openssl两个选项都进行了选择,其实只要进行其中一个选择便可。
OpenWrt从零开发

这篇文章主要记录基于GitHub的OpenWRT19.02源码如何一步步配置,编译,得到适用于OK1046-C2的镜像。

在源码下执行make menuconfig之后的首选配置

首先是平台相关的必要配置:

Target System (NXP Layerscape)
Subtarget (ARMv8 64-bit based boards) 
Target Profile (NXP LS1046A-RDB Default)  

然后是启用LUCI web图形界面

-> LuCI
    -> 1. Collections
        <*> luci................... LuCI interface with Uhttpd as Webserver (default) 
OpenWRT在编译前选择要使用的主题

在OpenWRT源码中修改

1、默认主题配置文件
feeds/luci/modules/luci-base/root/etc/config/luci

config core main
        option lang auto
        option mediaurlbase /luci-static/bootstrap
        option resourcebase /luci-static/resources
        option ubuspath /ubus/

2、然后是修改每个主题文件下面的30_luci-theme-***文件
比如
/feeds/kenzo/luci-theme-opentomato/root/etc/uci-defaults/30_luci-theme-opentomato
/feeds/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap
/package/lean/luci-theme-netgear/root/etc/uci-defaults/30_luci-theme-netgear
注释掉或者删除下面的句子,仅剩一个想要默认的主题不注释

set luci.main.mediaurlbase=/luci-static/opentomato

OpenWRT编译 LuCI - Applications添加插件应用说明

make menuconfig 进入定制界面
*进入编译选项配置界面,.按照需要配置.( ‘’ 代表编入固件,‘M’ 表示编译成模块或者IPK包, ‘空’不编译 )**
选择LuCI 配置: 常用

-—————————————————————————————-

LuCI —> Applications —> luci-app-accesscontrol #访问时间控制
LuCI —> Applications —> luci-app-adbyby-plus #广告屏蔽大师Plus +
LuCI —> Applications —> luci-app-arpbind #IP/MAC绑定
LuCI —> Applications —> luci-app-autoreboot #支持计划重启
LuCI —> Applications —> luci-app-ddns #动态域名 DNS(集成阿里DDNS客户端)
LuCI —> Applications —> luci-app-filetransfer #文件传输(可web安装ipk包)
LuCI —> Applications —> luci-app-firewall #添加防火墙
LuCI —> Applications —> luci-app-flowoffload #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS…
LuCI —> Applications —> luci-app-frpc #内网穿透 Frp
LuCI —> Applications —> luci-app-guest-wifi #WiFi访客网络
LuCI —> Applications —> luci-app-ipsec-virtuald #virtual服务器 IPSec
LuCI —> Applications —> luci-app-mwan3 #MWAN3负载均衡
LuCI —> Applications —> luci-app-mwan3helper #MWAN3分流助手
LuCI —> Applications —> luci-app-nlbwmon #网络带宽监视器
LuCI —> Applications —> luci-app-ramfree #释放内存
LuCI —> Applications —> luci-app-samba #网络共享(Samba)
LuCI —> Applications —> luci-app-sqm #流量智能队列管理(QOS)