OpenWRT 各种烧录方式及量产(三)

2023-05-16

界面烧录 — 不更新uboot

电脑连接WIFI(或者通过网线连接电脑与路由器), 通过浏览器访问路由器管理界面,进行升级。注意不要断电!!!(断电只能通过tftp方式恢复)
Web
openwrt-ar71xx-generic-ap147-16M-squashfs-sysupgrade.bin
在这里插入图片描述

winscp ---- 不更新uboot

电脑连接WIFI(或者通过网线连接电脑与路由器),打开WinScp软件输入IP地址与账户密码(连接上可能是路由器没有打开TFTPD服务器,或者路由器没有设置初始登录密码,通过路由器管理页面设置登录密码)
winscp

make menuconfig
添加SFTP/FTP 方便winsc文件传输
Network --->
        File Transfer --->
            <*>vsftp

输入密码

通过鼠标将升级文件拉到openwrt系统。(放在/tmp目录最好)
在这里插入图片描述
通过串口工具连接到openwrt主板
在这里插入图片描述
通过命令查看升级文件
在这里插入图片描述
通命令 sysupgrade -n xxx.bin (不保存配置文件)
在这里插入图片描述
等待烧录完成,然后自动重启(注意不要断电!!!)
在这里插入图片描述
在这里插入图片描述

tftp烧录 — 不更新uboot(一般在烧录中途断电导致根系统不完整或者编译固件和硬件不适配情况下使用这种方式)

通过串口工具连接路由器主板,上电时候uboot倒计时进入内核

查询主板相关信息

u-boot> printenv
bootargs=console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=spi0.0:256k(u-boot),64k(u-boot-env),14528k(rootfs),1472k(kernel),64k(art),16000k(firmware)
bootcmd=bootm 0x9F050000 || bootm 0x9FE80000
bootdelay=1
baudrate=115200
ipaddr=10.10.18.1
serverip=10.10.18.100
autoload=no
hostname=u-boot_zbt-we1526
bootfile=firmware.bin
loadaddr=0x80800000
ncport=6666
uboot_name=u-boot.bin
uboot_addr=0x9F000000
uboot_size=0x40000
uboot_upg=if ping $serverip; then tftpb $loadaddr $uboot_name && if itest.l $filesize <= $uboot_size; then erase $uboot_addr +$uboot_size && cp.b $loadaddr $uboot_addr $uboot_size && echo DONE! U-Boot upgraded!; else echo ERROR! File is too big!; fi; else echo ERROR! $serverip is not reachable!; fi
fw_addr=0x9F050000
fw_upg=if ping $serverip; then tftpb $loadaddr $bootfile && erase $fw_addr +$filesize && cp.b $loadaddr $fw_addr $filesize && echo DONE! Firmware upgraded!; else echo ERROR! $serverip is not reachable!; fi
recovery=if button; then sleep 600;setenv cnt 0;setenv stop_boot;echo Keep button pressed for at least:;echo - 3s for web based recovery;echo - 5s for U-Boot console;echo - 7s for network console;echo;while button && itest $cnt < 0xA; do ledon;sleep 300;echo . '\\c';sleep 300;ledoff;sleep 600;setexpr cnt $cnt + 1;done;echo 0x$cnt seconds;echo;if itest $cnt >= 0xA; then echo \#\# Error: 10s limit reached!;echo Continuing normal boot...;echo;elif itest $cnt >= 7; then echo Starting network console...;setenv stop_boot 1;echo;startnc;elif itest $cnt >= 5; then echo Starting U-Boot console...;setenv stop_boot 1;echo;elif itest $cnt >= 3; then echo HTTP server is starting for firmware update...;setenv stop_boot 1;echo;httpd;elif itest $cnt < 3; then echo \#\# Error: button was not pressed long enough!;echo Continuing normal boot...;echo;fi;setenv cnt;fi
stdin=serial
stdout=serial
stderr=serial
ethaddr=94:A4:08:EF:FC:C1
ethact=eth0


Environment size: 1910/64508 bytes


u-boot>

配置TFTPD服务器

主板与电脑通过网线直连方式下
首先配置电脑的IP地址 $serverip , 然后通过Tftpd工具创建服务器(一般自动识别,只要选择存放固件目录)
在这里插入图片描述
Tftpd工具设置
在这里插入图片描述
验证是否正常ping通电脑服务器(如果不能ping 通,大概率是防火墙拦截)

u-boot> ping 10.10.18.100   
eth0 link down
enet1 port0 up
Using eth1 device
## Error: ping failed, host 10.10.18.100 is not alive!
u-boot>

在这里插入图片描述
在这里插入图片描述
关闭防火墙

u-boot> ping 10.10.18.100
Using eth1 device
Ping OK, host 10.10.18.100 is alive!
u-boot>

下载程序

通过查询主板相关信息 得到:升级步骤

fw_upg=
    if 
        ping $serverip;  ----> serverip=10.10.18.100
    then 
        tftpb $loadaddr $bootfile  ----> loadaddr=0x80800000  bootfile=xxxx.bin
        erase $fw_addr +$filesize     ---->  fw_addr=0x9F050000  $filesize=文件大小(0x开头 注意+filesize是没有空格)
        cp.b $loadaddr $fw_addr $filesize 
        echo DONE! Firmware upgraded!; 
    else 
        echo ERROR! 
        $serverip is not reachable!; 
    fi

tftpd下bin文件

得到升级命令:

tftpb 0x80800000 openwrt-ath79-generic-glinet_gl-mifi-squashfs-sysupgrade.bin

在这里插入图片描述
擦除固件地址

erase 0x9F050000 +0x4c032b

在这里插入图片描述
拷贝新固件到固件地址

cp.b 0x80800000 0x9F050000 0x4c032b

在这里插入图片描述

复位重启等待…

tftp 烧录uboot (建议通过flash方式烧录。先用Flash备份整个固件,然后再实验)

与tftp升级固件类似。

uboot_upg=
	if ping $serverip;  (能否ping通 $serverip=10.10.18.100)
	then 
		tftpb $loadaddr $uboot_name  		($loadaddr=0x80800000 xxxu-boot.bin )
		if itest.l $filesize <= $uboot_size; (下载uboot.bin 大小 <= $uboot_size=0x40000)
		then 
			erase $uboot_addr +$uboot_size    (erase 0x9F000000 +0x40000 )
			cp.b $loadaddr $uboot_addr $uboot_size (cp.b 0x80800000 0x9F000000 +0x40000 )
			echo DONE! 
			U-Boot upgraded!; 
		else 
			echo ERROR! 
			File is too big!; 
		fi;
 	else 
 		echo ERROR! 
 		$serverip is not reachable!;
 	fi

Flash烧录固件

通过flash烧录器(建议买好点,如果自己生成wifi模块,因为涉及mac地址的滚码烧录)

通过串口输入ifconfig可以查询相关网卡信息(用于后面的flash读取出来mac存放内存地址查找)
在这里插入图片描述
QCA9531模组的Flash型号是华邦25Q128JV,用夹具把flash芯片夹好,然后通过flash配套工具进行操作
在这里插入图片描述
读取flash,然后保存(用于恢复设备,或者作为量产基础固件)
在这里插入图片描述
可以将flash读取的内容写入另外一个空白的flash中,然后将新的flash焊接回去,验证新烧录的flash是否正常工作(如果不能工作,请认真看看是否读取失败。或者本身设备对其运行代码进行加密)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

bin文件手动修改相关mac地址(flash烧录器借朋友。没有高级功能自定义滚码)

利用hex操作软件(我使用的是UltraEdit),查找相应mac。 (记住:将读取的文件再拷贝一份来进行修改mac)
在这里插入图片描述
在这里插入图片描述
进行手动修改(将地址修改94A408EF10C1 94A408EF10C2 94A408EF10C0 )注意根据mac规则生成新的mac,我只改的第二位(偶数)。只为了验证mac。实际你们可以按申请到的mac( mac 关系访问外网)
在这里插入图片描述
进行写入flash
在这里插入图片描述
在这里插入图片描述

焊接flash,然后上电启动是否验证正常。如果自测无大问题交由测试进行更全面测试。
在这里插入图片描述

量产问题

wifi模块量产需要购买mac地址

思路:可以将已经验证测试没有问题的样机,拆卸flash芯片通过flash烧录器拷贝出来,通过ultraedit软件打开 bin文件 查询mac地址。然后配置flash烧录器滚码进行烧录。(如果量不大就自己手动烧录flash,或者交给flash厂家他们可以做滚码烧录)

进阶篇:OpenWrt网络优化,提升网络稳定性

上一篇:OpenWrt源码目录结构说明(QSDK)(二)
下一篇:OpenWRT 添加文件到源码及自启动配置 (四)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenWRT 各种烧录方式及量产(三) 的相关文章

  • ADB命令用法大全

    一 ADB简介 Android Debug Bridge xff0c 安卓调试桥 xff0c 它借助adb exe xff08 Android SDK安装目录platform tools下 xff09 xff0c 用于电脑端与模拟器或者真实
  • SDN入门_基本概念掌握

    部署SDA的链接 xff1a https www cisco com c en us solutions enterprise networks software defined access compatibility matrix ht
  • docker-io, docker-ce, docker-ee 区别

    docker io docker engin 是以前早期的版本 xff0c 版本号是 1 xff0c 默认centos7 安装的是docker io xff0c 最新版是 1 13 docker ce 是社区版本 xff0c 适用于刚刚开始
  • Typora免费版下载【Mac、Windows】

    前言 Typora1 0版本之后是付费版本 xff0c 1 0之前的版本官方网站已移除 xff0c 在网上找了好久 xff0c 现在记录下来 下载 付费版 Typora支持macOS Window Linux系统 xff1a 官方下载地址
  • docker修改镜像名称以及tag版本

    docker tag 镜像ID 镜像名称 tag版本信息 docker tag 8ef375298394 mysql v5 7
  • npm安装报错解决合集(一)

    在新版nodejs已经集成了npm xff0c 所以npm也都安装好了 可以通过输入下面命令来测试是否成功安装 node v npm v 如果安装成功 xff0c 都会出现版本号 用npm v测试 xff0c 报错 xff1a node i
  • ES6系列——类数组转换为数组的几种方法以及for of、forin、for Each的区别

    以及目录 一 什么是类数组 xff1f 二 什么是类数组对象 xff1f 第一种方法 xff1a 使用for in 将类数组对象转换为数组 第二种方法 内置对象keys和valus 第三种方法 xff1a Array from for of
  • 对.net事件的看法

    一 事件的本质 事件是软件系统里的两个子系统之间 xff0c 或者两个模块之间 xff0c 或者两个对象之间发送消息 xff0c 并处理消息的过程 在面向对象的世界里 xff0c 就可以统一认为是两个对象之间的行为 两个对象之间发送的这种消
  • 深入理解module.exports、exports、require、export、export default、import

    前言 xff1a 说到module exports exports require export export default import这些 xff0c 有一点我们是必须要提一下的 xff0c 就是模块化编程方式 以上这些都是模块之间的
  • 服务器安全设置Centos7 防火墙firewall与iptables

    一 gt gt gt gt gt gt 启用centos7 iptables防火墙Centos7 防火墙firewall设置方法 我们Sinesafe在处理客户服务器Linux Centos7 64位系统里配置防火墙安全设置需要选择2种方案
  • VTK基本概念之坐标系统

    坐标系统 在实际开发中 xff0c 必须理解不同坐标系统之间的关系 计算机图形学里常用的四种坐标系 xff1a Model坐标系 Word坐标系 View坐标系和Display坐标系统 xff0c 转换关系如下图所示 VTK支持多种不同类型
  • STM32学习(蜂鸣器实验)

    蜂鸣器硬件电路连接 蜂鸣器软件设计 库函数 使能输入输出口时钟 调用函数RCC AHB1PeriphClockCmd 初始化输入输出口模式 调用函数GPIO Init 操作输入输出口 xff0c 输出高低电平 beep h ifdef BE
  • Esxi\CentOS7.6虚机\2080ti驱动 Unable to determine the device handle for GPU 0000:0B:00:00: Unknown ERROR

    整体背景 服务器使用Esxi虚拟出CentOS7 6的虚机 xff0c 然后在虚机中给2080ti显卡安装驱动 安装过程 1 配置显卡直通 此部分由运维完成 xff0c 未参与其中 xff0c 可参考攻略 xff1a https blog
  • 从断舍离中整理生活

    前言 公众号有一个多月未更文 xff0c 主要思考了后续更文的方向 xff0c 最终确定了以读书笔记分享为主题 xff0c 和大家一起学习 一起成长 今天开始 xff0c 每周至少更新一篇文章 xff0c 大家有想看的书可以在后台留言 xf
  • Android Studio升级到 3.2.0,部分依赖库报错 android.arch.lifecycle:runtime:1.0.3,解决办法

    Android Studio升级到 3 2 0 xff0c 部分依赖库报错 问题描述 xff1a Cannot find a version of android arch lifecycle runtime that satisfies
  • OpenCV4.7.0、FFmpeg5.1 Nvidia GPU视频硬解码

    1 环境 操作系统 xff1a Ubuntu18 04 GPU xff1a Nvidia GeForce RTX 2080TI 2 安装2080TI驱动 请参考文章 158条消息 NVIDIA GPU 驱动程序安装 洪流之源的博客 CSDN
  • MQ-2烟雾传感器的使用

    一 MQ 2烟雾传感器简介 MQ 2 烟雾传感器采用在清洁空气中电导率较低的二氧化锡 SnO2 xff0c 属于表面离子式N型半导体 当MQ 2烟雾传感器在200到300摄氏度环境时 xff0c 二氧化锡吸附空气中的氧 xff0c 形成氧的
  • HC-SR04超声波测距模块介绍

    超声波简介 超声波是由机械振动产生的 可在不同介质中以不同的速度传播 具有定向性好 能量集中 传输过程中衰减较小 反射能力较强等优点 超声波传感器可广泛应用于非接触式检测方法 它不受光线 被测物颜色等影响 对恶劣的工作环境具有一定的适应能力
  • 液晶12864显示图片

    液晶12864简介 12864是128 64点阵液晶模块的点阵数简称 基本参数 1 低电源电压 xff08 VDD 43 3 0 xff5e 43 5 5V xff09 2 显示分辨率 128 64 点 3 内置汉字字库 xff0c 提供8
  • 液晶12864显示字符

    液晶12864简介 12864是128 64点阵液晶模块的点阵数简称 基本参数 1 低电源电压 xff08 VDD 43 3 0 xff5e 43 5 5V xff09 2 显示分辨率 128 64点 3 内置汉字字库 xff0c 提供81

随机推荐

  • Bash:command:未找到命令

    前言 在Linux系统中 xff0c 经常会遇到这样的问题 xff1a bash xff1a command xff1a 未找到命令 这个真的很烧脑 xff0c 遇到的次数多 xff0c 在网上也查了好多 xff0c 答案五花八门 xff0
  • S32K148----SDK笔记----CAN收发

    文章目录 前言建立工程ProcessorExpert配置发送CAN报文CAN接收中断工程代码微信公众号 前言 S32K148自带3路CAN 官方的SDK给了can pal的例程 本文更基础一点 直接用flexcan组件相关的函数 CANFD
  • TC397开发板KIT_A2G_TC397_5V_TFT简介

    开发板简介 照片资料调试资源供电扩展CAN 用的开发板是KIT A2G TC397 5V TFT 其实更推荐KIT A2G TC397 3V3 TFT 售价 1 670 59 照片 正面 背面 5V的板子和3 3V的板子主要是下面几个器件不
  • AURIX TC397 Flash编程

    目录 Flash编程基础知识Flash Programming微信公众号 Flash编程基础知识 参考 Flash Programming 1 for KIT AURIX TC397 TFT 本例展示了如何烧写PFLASH Program
  • 周立功USBCAN-II的Python调用

    目录 USBCAN II环境配置CAN收发运行zcanpro微信公众号 USBCAN II USBCAN II 或者叫USBCAN2是周立功 致远电子 比较经典的USB接口的CAN卡 有两路标准CAN 最高支持到1M波特率 单用USB就可以
  • 拒绝丧偶式育儿,正确「养育男孩」

    前言 如何养育男孩 xff1f 当写下这几个字的时候 xff0c 我已在心里默念了好几遍 xff0c 不知道该如何回答 在2年前的某个凌晨2点18分 xff0c 第一声婴儿地啼哭 xff0c 护士告诉我 是个男孩 开始 xff0c 我就买了
  • Pandoc 多Markdown转单PDF

    文章目录 Pandoc 简介Pandoc 安装pandoc latex template字体安装Powershell 脚本Ubuntu PandocMarkdown 合并 Pandoc 简介 Pandoc 免费的文档转换器 支持常见的各种文
  • SocketCAN 命名空间 VCAN VXCAN CANGW 举例

    文章目录 NAMESPACESocketCAN最新 can utils 安装VCAN 举例VXCAN 举例CANGW 举例参考 NAMESPACE namespaces 命名空间 将全局系统资源包装在抽象中 使命名空间中的进程看起来拥有自己
  • slcan 协议 脚本 测试

    文章目录 slcan 协议kernel slcancan utils slcanptycan utils slcandcan utils slcan attachpython slcan slcan 协议 slcan 基于文本 ASCII
  • Notepad++直接编译运行Java

    安装Notepad 43 43 和JDK xff08 略 xff09 xff1b Notepad 43 43 的菜单栏 xff1a 插件 gt Plugin Manager gt Show Plugin Manager xff0c Avai
  • 几款自带编码器的直流电机

    不少小伙伴做两轮自平衡车或者机器人或者各种比赛时 xff0c 经常需要用到直流电机带编码器 xff0c 有的自己可以做外置的编码器 xff0c 但是否有自带编码器或码盘的直流电机 xff1f 答案是肯定的 xff0c 这里就推荐几款带编码器
  • 四大编辑器 -- Sublime, Atom, VS Code和Notepad++

    主要介绍3个跨平台的 Sublime Atom VS Code 一个Windows的 Notepad 43 43 Sublime Text 官网 https www sublimetext com Sublime Text is a sop
  • AD绘制四层板

    原理图导入PCB后 默认是双层板 可以Design gt Layer Stack Manager 点击Top Layer 然后点击Add Plane 负片层 电脑上在此层走线表示把铜挖空 这里把一整层都当作GND 非GND的过孔打到这一层
  • 群晖(Synology)配置 NAS + 软路由

    文章目录 背景结论软路由配置 背景 老板上周兴致勃勃的找到我 说Macbook存储不够用了 帮他找个存东西的 不是移动硬盘 我也很懵逼 我搞活动捡便宜充的百度网盘超级会员 觉得自己很是尾巴翘上天的土豪了 但想到老板的身价 又不太清楚macb
  • 各种类型的Writable

    各种类型的Writable xff08 Text ByteWritable NullWritable ObjectWritable GenericWritable ArrayWritable MapWritable SortedMapWri
  • C++ strtok的用法

    size 61 large align 61 center strtok的用法 align size 函数原型 xff1a char strtok char s char delim 函数功能 xff1a 把字符串s按照字符串delim进行
  • 读《遇见未知的自己》笔记

    为什么我不快乐 xff1f 为什么我不能拥有自己想要的生活 xff1f 此刻屏幕前的你 是否想过 xff0c 自己为什么会出现这种情况呢 xff1f 张德芬在 遇见未知的自己 一书给出了解释 xff1a 我们人类所有受苦的根源就是来自不清楚
  • PX4飞控问题汇总

    接触PX4飞控代码一年多了 xff0c 代码都是模块化 开发起来比APM的方便 xff0c 使用过程中也出现过各种怪异问题 xff0c 用的硬件是V5 nano 和V5 43 xff0c 测试的代码版本是1 9和1 10 今天总结一下遇到过
  • Sumo 搭建交叉路口交通流仿真平台

    Sumo安装 注意事项 xff1a 需要工具的使用需要环境变量的设置 需要包含文件Sumo安装路径下的bin和tools Sumo配置文件 Sumo中项目的配置文件的组成如下所示 节点文件 图 1 节点及边的拓扑图 Node的属性主要有id
  • OpenWRT 各种烧录方式及量产(三)

    界面烧录 不更新uboot 电脑连接WIFI xff08 或者通过网线连接电脑与路由器 xff09 通过浏览器访问路由器管理界面 xff0c 进行升级 注意不要断电 xff01 xff01 xff01 xff08 断电只能通过tftp方式恢