1、续上一篇,比较幸运的是我们编译没有报错,如图所示
所生成的固件对应文件夹 openwrt/bin/targets/ar71xx/generic
其中 openwrt-ar71xx-generic-ap147-010-squashfs-sysupgrade.bin 文件可以烧录到开发板中。
2、这里编译完是没有任何OpenWRT的图形管理界面的,我们需要添加Luci界面,用于嵌入式 Linux 系统的开源Web用户界面。
进入LuCI -- Collections,使用空格键选中Luci直至显示*(*
(星号): 通常表示该选项被选择或启用。M
: 通常表示该选项被配置为模块(Module)。在 Linux 内核中,模块是一种可以在运行时加载和卸载的代码,它们不是直接编译到内核中,而是作为独立的模块存在。)
进入LuCI -- Application -- luci-app-uhttpd 选中为 * (LuCI(OpenWrt 配置界面)的一个扩展,允许用户通过基于 Web 的图形用户界面配置和管理 uhttpd
Web 服务器)
还可以再LuCI > Themes中编译系统带的3个额外主题,根据自己喜好选择编译或者不编译
英语不好的同学,可以再编译的时候使用中文版本的LuCI,配置如下
LuCI > Modules > Translations
<*> English (en)
<*> Chinese (zh-cn)
想要默认启动中文界面还需要更改配置(习惯使用gedit文本编辑器,按照个人喜好,vim也可以)
gedit feeds/luci/modules/luci-base/root/etc/config/luci
修改 option lang zh_cn
保存并重新编译,二次编译很快就能完成。
make V=s -j8
3、将USB转串口连接至开发板,这里USB转串口芯片为CH340(任意USB转串口都可以,只要主机能够有驱动识别即可),USB转串口的TX与RX和开发板是交叉线连接的,即TX连接RX, RX连接TX。
将USB转串口连接至Ubuntu主机,可以通过命令查看驱动已经有了,加载了CH340驱动
lsusb
输入命令后可以看到设备里面有 ttyUSB0 这个串口设备了
ls /dev
4、通过串口连接到QCA9531控制台,在Windows下我习惯使用SecureCRT,这里我们使用Ubuntu操作系统,先下载 minicom
sudo apt install minicom
配置 minicom
sudo minicom -s
进入 Serial port setup 回车进入配置
选择 A 将 Serial Device 改为 /dev/ttyUSB0
按 回车 保存直至返回到上一层目录,选择 Save setup as dfl 保存刚才的配置为默认配置,然后退出选择 Exit
Exit后直接进入Minicom界面
5、直接对开发板上+12V电源,可以看到系统已经跑起来了,Uboot(用于嵌入式系统的开源引导加载程序。它负责初始化硬件、加载操作系统内核,并将系统引导到运行状态。U-Boot通常用于启动Linux内核,但也可以用于启动其他操作系统或引导加载程序。它提供了一个命令行界面,允许用户在引导过程中执行各种操作,例如烧写固件、配置启动参数等。)已经启动了
图中已经可以看到U-Boot版本号和硬件信息,比如CPU的型号是QCA953x,类型是:MIPS 24Kc DDR类型和Flash容量 MAC等等信息。 有意思的是Uboot显示路由器的型号为ZBT-WE1526,信息也显示在OpenWRT的官网,确实是QCA9531。
https://openwrt.org/toh/hwdata/zbt/zbt_we1526
等一切加载完成后,按回车可以直接进入系统命令行,此时显示为QSDK,QSDK是QCA 软件开发套件,新版本已经迁移到 codelinaro ,是高通公司提供的软件开发包,且似乎新版本已经不支持QCA9531的构建了。
这里我们不使用QSDK来构建系统,我们已经使用了OpenWRT官方提供的包来构建我们的系统。Flash里面有uboot那么我们就不必担心系统坏掉,后期可以直接从Flash里面提取固件修改即可。目前我还没研究怎么修改Uboot,后续有深入了解再开展叙述,这里就用他的uboot先。
其中我们可以看到 BusyBox + 版本号,它是小型而功能丰富的 Unix 工具箱,还包含了一个简化的 shell,主要是针对嵌入式资源受限的一个小巧的工具箱,我们可以进行一系列的命令操作。
6、烧录之前我们看下我们Flash里面的文件系统
等待系统完全启动后,按回车进去,输入
cat /proc/mtd
可以看到Linux中对闪存类的存储器是采用的MTD类设备驱动来实现的,它可以是 NOR Flash、NAND Flash、DataFlash 等。其中固件不同,这里的配置也不一样(AR和MTK的芯片就不同,有兴趣可以自行搜索)。
在图中我们看到u-boot 和 u-boot-env(是一组变量,用于存储 U-Boot 的配置信息,这些变量包括引导参数、设备设置和其他配置数据),后面再探索uboot的配置。
rootfs 是根文件系统(Root File System)的缩写,通常包含了设备的基本文件和目录结构,用于支持设备的基本功能和服务。这个文件系统通常是只读的,它包含了设备启动时所需的核心文件和程序。在运行时,通常会加载到内存中,以提供设备的基本操作。
rootfs_data 是一个用于存储可写数据的文件系统,通常包含设备运行时的变更和用户数据。这个文件系统通常是可写的,并且可以用来保存配置文件、日志、用户数据等。这样可以确保 rootfs
的稳定性,同时允许用户修改和保存数据到 rootfs_data
。
kernel 用来存储内核,加载 Linux 内核到系统内存中,由uboot来引导
art 文件通常包含了与设备上的无线芯片相关的射频校准数据、MAC 地址和其他配置信息,
firmware 分区包含了设备的操作系统及其相关组件,可能包括定制的 Linux 内核、用户空间工具、库文件等。固件文件是设备的核心软件,决定了设备的功能和运行环境。
这些大概清楚就行,我们开始准备刷机。
7、连接路由的串口到主机,打开控制台,上电的瞬间看到倒计时的时候,按回车,直接进入uboot;如图所示,可以看到stop booting在倒计时,倒计时之前按回车停止加载引导程序。
此时将电脑网线连接到路由器LAN口,不要接WAN口。
在uboot端输入 http 或者 httpd 命令
http
可以看到uboot的IP为 10.10.18.1 ,我们修改我们主机的IP为同一个网段,手动配置IP为10.10.18.123(根据自己喜好设置最后的数字)。
关闭网口在开启网口,重启了ubuntu网络服务
ping 10.10.18.1
可以ping通路由器
开浏览器,在浏览器中输入 10.10.18.1 ,可以看到已经可以进入刷机WEB界面了。
这里我们选择 Choose File 选择 openwrt-ar71xx-generic-ap147-010-squashfs-sysupgrade.bin 文件 (文件位于openwrt/bin/targets/ar71xx/generic目录下
)
选择完毕直接点击右侧 Update firmware 按钮开始刷机直至完成。
刷机完成后会重新从Uboot开始引导,等待路由全部启动后,修改网口配置,设置为DHCP自动获取,重启网口。
输入网口查看命令,可以看到已经获取到路由器自动分配的IP
ifconfig
在浏览器中输入 192.168.1.1
可以看到系统已经进入了LuCI界面,密码输入admin 可以看到我们的版本信息确实为18.06刷机成功。