当前位置: 首页 > news >正文

【启明智显技术分享】SSD202核心板Rootfs下如何烧录mac地址

提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸科技的新产品、新方案的主要特点及应用!希望你能第一时间了解并快速用上好的方案和产品!
在这里插入图片描述

SSD202核心板Rootfs下如何烧录mac地址:

一、uboot下默认mac地址

uboot下面默认mac地址的设定 MAC Address 00:30:1B:BA:02:DB boot\drivers\mstar\emac\mdrv_emac.c 中默认值 u8 MY_MAC[6] = { 0x00, 0x30, 0x1B, 0xBA, 0x02, 0xDB };

SSD202 Rootfs下烧录mac地址:

注意:本文主要介绍,在系统启动后通过SD卡或U盘的方式,批量烧录mac地址。

概述:上电进入系统后,自启SD卡中的脚本,通过脚本文件往boot下的环境变量写mac地址。每次写完往后加1。就可以实现批量烧录mac地址了。

只要在不重新烧录uboot的情况下,更新固件,mac地址是不会被覆盖的。

一、开机自动执行SD卡中的脚本
我们可以在/customer/demo.sh中添加相应的自启脚本。系统启动后就自动执行burn_mac.sh进行烧写mac地址。
在这里插入图片描述
二、mac烧写脚本

脚本工作原理
脚本执行后,读取/sdcard/mac_current中的mac的起始地址,通过/etc/fw_setenv向uboot中的环境变量,写入mac地址,并将写入的地址记录在/sdcard/mac_record.txt中。每次烧写完成后,向后加1,在烧写一下块核心板时,从新的mac地址开始。并且在烧录mac地址前,校验当前设备是否已经烧录过地址了(具体可自定义判断规则),防止重复烧录。

烧写脚本
烧写脚本如下:
!](https://img-blog.csdnimg.cn/direct/7604185b952941c0a3a57e0aefdf4931.png)

#!/bin/sh
MAC_CURNNET=/sdcard/mac_current
MAC_RECORD=/sdcard/mac_record.txtburn_ok() {echo 14 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio14/directionfor i in 1 2 3 doecho 1 > /sys/class/gpio/gpio14/valuesleep 0.5echo 0 > /sys/class/gpio/gpio14/valuesleep 0.5doneecho "------------------> burn_ok"
}burn_fail() {echo 14 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio14/directionecho 1 > /sys/class/gpio/gpio14/valuesleep 5echo 0 > /sys/class/gpio/gpio14/valueecho "------------------> burn fail"
}have_burn() {echo 14 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio14/directionfor i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20doecho 1 > /sys/class/gpio/gpio14/valuesleep 2echo 0 > /sys/class/gpio/gpio14/valuesleep 2doneecho "------------------> have burn"
}burn_mac() {#mount /dev/mmcblk0p1 /sdcard -o iocharset=utf8	if [ ! -f $MAC_CURNNET ]; thenbufn_failumount /sdcardexit 0fi#mac_current=88:A9:A7:00:77:40#mac_current=`echo 88:A9:A7:00:FF:FF | sed 's/:/ /g'`mac_current=`cat $MAC_CURNNET | sed 's/:/ /g'`if [ "${mac_current}" == "" ]; thenburn_failexit 1fiecho "mac_current=$mac_current"#burnmac_current_burn=`cat $MAC_CURNNET`//这里烧录到08:FC:52:AC:F9:00截止if [ "${mac_current_burn}" == "08:FC:52:AC:F9:00" ]; then# this card only burn 500 pcsburn_failexit 1fi/etc/fw_setenv ethaddr ${mac_current_burn}#recordecho "$mac_current_burn" >> $MAC_RECORDBYTE1=16#`echo $mac_current | awk '{print $1}'`BYTE2=16#`echo $mac_current | awk '{print $2}'`BYTE3=16#`echo $mac_current | awk '{print $3}'`BYTE4=16#`echo $mac_current | awk '{print $4}'`BYTE5=16#`echo $mac_current | awk '{print $5}'`BYTE6=16#`echo $mac_current | awk '{print $6}'`VALUE=0x00let "VALUE=(BYTE1<<40)+(BYTE2<<32)+(BYTE3<<24)+(BYTE4<<16)+(BYTE5<<8)+(BYTE6<<0)"let "VALUE=VALUE+1"NEW_BYTE1=16#0x00NEW_BYTE2=16#0x00NEW_BYTE3=16#0x00NEW_BYTE4=16#0x00NEW_BYTE5=16#0x00NEW_BYTE6=16#0x00let "NEW_BYTE1=(VALUE>>40)&0xFF"let "NEW_BYTE2=(VALUE>>32)&0xFF"let "NEW_BYTE3=(VALUE>>24)&0xFF"let "NEW_BYTE4=(VALUE>>16)&0xFF"let "NEW_BYTE5=(VALUE>>8)&0xFF"let "NEW_BYTE6=(VALUE>>0)&0xFF"mac_new=`printf "%0.2X:%0.2X:%0.2X:%0.2X:%0.2X:%0.2X" $NEW_BYTE1 $NEW_BYTE2 $NEW_BYTE3 $NEW_BYTE4 $NEW_BYTE5 $NEW_BYTE6`echo "mac_new=$mac_new"echo -n "$mac_new" > $MAC_CURNNET#/etc/fw_setenv bootcmd 'dcache on; gpio out 45 0; gpio out 11 0; gpio out 38 1; ext4load mmc 0:2 0x22000000 /boot/uImage; gpio out 38 0; bootm 0x22000000; reset'sync#umount /sdcardsyncburn_ok
}mac_dev=`/etc/fw_printenv | grep ethaddr`
if [ "${mac_dev}" == "" -o "${mac_dev}" == "ethaddr=00:30:1b:ba:02:db" ]; thenburn_mac
elseecho "this device has been burn mac, skip..."have_burn
fi

将mac_record.txt、mac_current、burn_mac.sh拷贝到SD卡中。
mac_record.txt:新建一个空的txt,用于记录烧写的mac地址。
mac_current:存放起始地址文件,例如mac_current里写入88:A9:A7:00:77:40,则会从88:A9:A7:00:77:40开始写入mac地址。

上电后就自动读取SD卡中的脚本,进行烧录MAC地址。

相关文章:

【启明智显技术分享】SSD202核心板Rootfs下如何烧录mac地址

提示&#xff1a;作为Espressif&#xff08;乐鑫科技&#xff09;大中华区合作伙伴及sigmastar&#xff08;厦门星宸&#xff09;VAD合作伙伴&#xff0c;我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…...

springboot3 集成spring-authorization-server (一 基础篇)

官方文档 Spring Authorization Server 环境介绍 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 引入maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…...

AVL树!

文章目录 1.AVL树的概念2.AVL树的插入和旋转3.AVL树的旋转3.1旋转的底层&#xff1a;3.2 右旋转3.3 左旋转3.4 双旋 4.AVL树的底层 1.AVL树的概念 当向二叉搜索树中插入新结点后&#xff0c;如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整)&a…...

知识付费系统怎么安装教程,教师课堂教学该掌握哪些表达技巧?

课堂教学语言表达是教学艺术的一个基本且重要的组成部分。教师向学生传道、授业、解惑以及师生之间信息的传递和情感的交流&#xff0c;都离不开运用教学语言这一有力的工具&#xff0c;在课堂上&#xff0c;教师通过情趣盎然的表述&#xff0c;鞭辟入里的分析&#xff0c;恰到…...

基于MetaGPT的LLM Agent学习实战(一)

前言 我最近一直在做基于AI Agent 的个人项目&#xff0c; 因为工作加班较多&#xff0c;设计思考时间不足&#xff0c;这里借着Datawhale的开源学习课程《MetaGPT智能体理论与实战》课程&#xff0c;来完善自己的思路&#xff0c;抛砖引玉&#xff0c;和各位开发者一起学习&am…...

【IMX6ULL项目】IMX6ULL上Linux系统实现产测工具框架

电子产品量产测试与烧写工具。这是一套软件&#xff0c;用在我们的实际生产中&#xff0c; 有如下特点&#xff1a; 1.简单易用&#xff1a; 把这套软件烧写在 SD 卡上&#xff0c;插到 IMX6ULL 板子里并启动&#xff0c;它就会自动测试各个模块、烧写 EMMC 系统。 工人只要按…...

【Linux基础】Vim保姆级一键配置教程(手把手教你把Vim打造成高效率C++开发环境)

目录 一、前言 二、安装Vim 三、原始Vim编译器的缺陷分析 四、Vim配置 &#x1f95d;预备知识----.vimrc 隐藏文件 &#x1f34b;手动配置 Vim --- &#xff08;不推荐&#xff09; &#x1f347;自动化一键配置 Vim --- (强烈推荐) ✨功能演示 五、共勉 一、前言 Vim作为…...

Gartner发布准备应对勒索软件攻击指南:勒索软件攻击的三个阶段及其防御生命周期

攻击者改变了策略&#xff0c;在某些情况下转向勒索软件。安全和风险管理领导者必须通过提高检测和预防能力来为勒索软件攻击做好准备&#xff0c;同时还要改进其事后应对策略。 主要发现 勒索软件&#xff08;无加密的数据盗窃攻击&#xff09;是攻击者越来越多地使用的策略。…...

IB 公式解析

IB损失 自我感悟 根据对决策边界的影响程度来分配权重。影响程度越大&#xff0c;分配到的权重越小&#xff1b;影响程度越小&#xff0c;分配到的权重越大。 最后其实就是平衡因子和交叉熵损失的输出的乘积 公式 3.2. Influence Function 影响函数允许我们在移除样本时估…...

开发辅助工具的缩写

开发辅助工具的缩写有很多&#xff0c;这些工具通常是为了提高软件开发效率、代码质量和团队协作效率而设计的。以下是一些常见的开发辅助工具及其缩写&#xff1a; IDE - Integrated Development Environment&#xff08;集成开发环境&#xff09; VCS - Version Control Sys…...

linux程序分析命令(一)

linux程序分析命令(一) **ldd&#xff1a;**用于打印共享库依赖。这个命令会显示出一个可执行文件所依赖的所有共享库&#xff08;动态链接库&#xff09;&#xff0c;这对于解决运行时库依赖问题非常有用。**nm&#xff1a;**用于列出对象文件的符号表。这个命令可以显示出定…...

MYSQL数据库-SQL语句

数据库相关概念 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准Structured Quer…...

MyBatis认识

一、定义 MyBatis是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java O…...

【WEEK11】 【DAY6】Employee Management System Part 7【English Version】

2024.5.11 Saturday Continued from 【WEEK11】 【DAY5】Employee Management System Part 6【English Version】 Contents 10.8. Delete and 404 Handling10.8.1. Modify list.html10.8.2. Modify EmployeeController.java10.8.3. Restart10.8.4. 404 Page Handling10.8.4.1. …...

【52】Camunda8-Zeebe核心引擎-Clustering与流程生命周期

Clustering集群 Zeebe本质是作为一个brokers集群运行&#xff0c;形成一个点对点网络。在这个网络中&#xff0c;所有brokers的功能与服务都相同&#xff0c;没有单点故障。 Gossip协议 Zeebe实现了gossip协议&#xff0c;并借此知悉哪些broker当前是集群的一部分。 集群使用…...

从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习

jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…...

图文并茂:解析Spring Boot Controller返回图片的三种方式

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 图文并茂&#xff1a;解析Spring Boot Controller返回图片的三种方式 前言使用Base64编码返回图片使用byte数组返回图片使用Resource对象返回图片图片格式转换与性能对比 前言 在互联网的世界里&…...

问题处理记录 | 表输出报错 Packet for query is too large (5,214,153 > 4,194,304).

这个错误是由于MySQL服务器接收到的查询数据包太大而引起的。具体来说&#xff0c;错误消息中提到的数据包大小为5,214,153字节&#xff0c;而MySQL服务器默认只接受最大为4,194,304字节的数据包。 要解决这个问题&#xff0c;你可以尝试通过修改MySQL服务器的配置来增大max_a…...

数据结构_栈和队列(Stack Queue)

✨✨所属专栏&#xff1a;数据结构✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 栈&#xff1a; 代码&#xff1a;function/数据结构_栈/stack.c 钦某/c-language-learning - 码云 - 开源中国 (gitee.com)https://gitee.com/wang-qin928/c-language-learning/blob/master/function/…...

基于docker 的elasticsearch冷热分离及生命周期管理

文章目录 冷热集群架构的应用场景冷热集群架构的优势冷热集群架构实战搭建集群 索引生命周期管理认识索引生命周期索引生命周期管理的历史演变索引生命周期管理的基础知识Rollover&#xff1a;滚动索引 冷热集群架构的应用场景 某客户的线上业务场景如下&#xff1a;系统每天增…...

Turbo Boost Switcher设备适配完全指南:从系统要求到机型验证全流程

Turbo Boost Switcher设备适配完全指南&#xff1a;从系统要求到机型验证全流程 【免费下载链接】Turbo-Boost-Switcher Turbo Boost disabler / enable app for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/tu/Turbo-Boost-Switcher Turbo Boost Switcher是一款…...

Dankoe新作《使命与收益》读书笔记 7|你不是迷茫,你只是不敢面对真正的自己

"我不知道自己想要什么。" 这大概是30岁前后最常说的一句话。辞职不敢&#xff0c;创业不会&#xff0c;留下来又不甘心。于是我们把迷茫当成一种身份&#xff0c;穿在身上&#xff0c;仿佛承认迷茫就不必为停滞负责。 但Dan Koe在《使命与收益》里说了一句扎心的话…...

Arduino-IRremote代码调试技巧:10个高效解决开发难题的方法

Arduino-IRremote代码调试技巧&#xff1a;10个高效解决开发难题的方法 【免费下载链接】Arduino-IRremote Infrared remote library for Arduino: send and receive infrared signals with multiple protocols 项目地址: https://gitcode.com/gh_mirrors/ar/Arduino-IRremot…...

新手入门DetectionLab:10个步骤掌握企业网络安全检测基础

新手入门DetectionLab&#xff1a;10个步骤掌握企业网络安全检测基础 【免费下载链接】DetectionLab clong/DetectionLab: DetectionLab是一个开源项目&#xff0c;旨在建立一个高度可配置的虚拟环境以模拟企业网络&#xff0c;用于检测恶意活动、演练入侵检测系统&#xff08;…...

Hunyuan-MT-7B开源镜像免配置部署:像素语言传送门一键启动教程(含GPU适配)

Hunyuan-MT-7B开源镜像免配置部署&#xff1a;像素语言传送门一键启动教程&#xff08;含GPU适配&#xff09; 1. 项目介绍 像素语言跨维传送门是一款基于Tencent Hunyuan-MT-7B大模型构建的创新翻译工具。它将传统翻译体验重构为16-bit像素冒险风格&#xff0c;让语言转换变…...

如何降低ai率?盘点3个降ai率神器与5个手改技巧,降aigc全流程解析!

最近我发现很多同学都在苦恼ai率这件事&#xff0c;后台发来的截图里&#xff0c;那报告&#xff0c;简直红得触目惊心。 现在的系统早已是next level&#xff0c;不是看你用了什么词&#xff0c;而是在分析你的文本生成逻辑。今天这篇文章&#xff0c;我不讲虚的&#xff0c;…...

Pinocchio库初体验:用Python快速验证你的双足机器人模型正逆解

Pinocchio库实战&#xff1a;Python双足机器人正逆运动学快速验证指南 当你第一次打开Pinocchio的文档时&#xff0c;可能会被那些复杂的数学公式和术语吓到。但别担心&#xff0c;我们今天要做的&#xff0c;就是抛开理论直接上手——用不到50行代码&#xff0c;让你的双足机…...

2026前端面试题

1.vue的通信方式Vue组件通信方式根据组件间的关系&#xff08;父子、兄弟、跨级、任意组件&#xff09;可分为多种方案。一、父子组件通信props&#xff08;父-子&#xff09;父组件通过属性向子组件传递数据&#xff0c;子组件通过defineProps接收<!-- 父组件 --> <C…...

M2LOrder模型在AI编程助手场景的应用:代码注释情感分析

M2LOrder模型在AI编程助手场景的应用&#xff1a;代码注释情感分析 1. 引言 你有没有在代码注释里写过“这里有个天坑&#xff0c;后面的人小心”或者“TODO: 这个逻辑太绕了&#xff0c;得重构”&#xff1f;这些看似随手的吐槽&#xff0c;其实藏着开发者最真实的情绪。代码…...

Z-Image-Turbo-辉夜巫女惊艳效果:神社鸟居背景+巫女舞动姿态动态构图

Z-Image-Turbo-辉夜巫女惊艳效果&#xff1a;神社鸟居背景巫女舞动姿态动态构图 想看看AI如何将“辉夜巫女”的古典神秘与神社鸟居的庄严宁静完美融合&#xff0c;并赋予其灵动的舞姿吗&#xff1f;今天&#xff0c;我们就来深度体验一个名为“Z-Image-Turbo-辉夜巫女”的专属…...