嵌入式系统开发-麦子学院(13)-linux底层系统开发(1)

嵌入式底层(1) 嵌入式底层(1) 文章目录嵌入式底层(1)前言一、ARM基础二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、ARM基础 不同的ARM体系采用不同的指令集 哈弗结构是数据和指令分开存储并行的 冯诺依曼结构是混合存储的 二、使用步骤 1.引入库 代码如下(示例): import numpy . 阅读详情

1. 嵌入式系统移植:

(1)交叉编译链: 不同平台的对指令集的编码译码不同。

将交叉编译器增加到环境变量中: ① PATH=$PATH:目录 ② vi /etc/environmet 文件中添加

交叉编译的工具集:

readelf	-h 读取文件的ELF头信息
size	读取文件ELF头的大小
nm	查看可执行程序的符号表
strip	剔除符号表
strings	查看可执行程序中的字符串
objdump	-d 反编译
objcopy	剔除ELF头信息
addr2line	标出错误信息的行号

2.虚拟机配置双网卡

1)点击虚拟机设置,然后点击添加按钮,添加网络适配器,点击下一步完成,虚拟机会自动设置。
在这里插入图片描述
2)使用“ifconfig”命令,可看到双网卡已经设置好了。

在这里插入图片描述

3. u-boot常用的命令:

print 	查看uboot的环境变量
setenv	设置/修改/删除uboot变量
saveenv	保存设置的uboot变量
nand	 erase :擦拭 write:写 read:读
tftp	使用tftp传输
bootm	启动内核                                      需要bootargs环境参数
go	内核从一段地址运行起来      需要bootargs环境参数
md 	显示一段内存信息
ipaddr 设置ipv4 地址

bootargs启动参数:

	root =	启动的根文件系在那个设备(设备信息initrd,size)
	init=	内核启动后,第一个可执行文件init进程从哪来
	console=	内核启动时,使用哪个设备作为控制台

4. 安装tftp服务

服务端安装tftp服务:

安装:

sudo apt-get install tftpd-hpa   //32位
sudo apt-get install tftpd openbsc-xinetd  //64位

配置:

sudo vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"    //指定将来下位机的下载目录为上位机的/tftpboot,此目录随意指定即可
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"

修改完毕,保存退出

sudo mkdir /tftpboot //创建tftpd-hpa网络服务的下载目录

修改下载目录的用户和组权限为当前用户(例如carspiriter用户)

sudo chown carspiriter /tftpboot -R 
sudo chgrp carspiriter /tftpboot -R

修改下载目录的权限

sudo chmod 777 /tftpboot

查看是否成功开启tftp服务:

netstat -ua  //可看到tftp服务

客户端使用tftp服务:

  • 设置好网络ip
  • tftp [内存地址] 文件

5. nand 命令

nand中5M空间表示:

5M : 5* 1M    
	5*2*20 --> 5*1000000000000000000000 -->5 * 0x10000 --> 0x500000

nand [动词] [内存地址] [nandflash地址]

例1:nand 中5M空间读到内存21000000,1K

nand read 2100000 0500000 1024

例2:内存21000000内容写到nand 中5M空间,1K

nand write 2100000 500000 1024

例3:擦拭nand 中5M空间,1K

nand erase 500000 1024

6.NFS服务

Ubuntu 系统 安装NFS server

1)执行命令:

sudo apt-get install nfs-kernel-server

2)在用户目录下,建立一个nfs服务的专有的文件夹

mkdir nfs

3)执行命令:sudo vim /etc/exports 配置nfs

4)在文件的最后一行添加:

/~/nfs *(rw,sync,no_root_squash,no_subtree_check)

5)解释

/~/nfs:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!

*:允许所有的网段访问,也可以使用具体的IP

rw:挂接此目录的客户端对该共享目录具有读写权限

sync:资料同步写入内存和硬盘

no_root_squash:root用户具有对根目录的完全管理访问权限。

no_subtree_check:不检查父目录的权限。

6)修改完上述配置文件保存退出。

7)执行命令:sudo /etc/init.d/portmap restart 重启portmap服务。
8)执行命令:sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务。

将nfs作为文件系统启动

在uboot命令行,设置bootargs启动参数:

bootargs root=/dev/nfs nfsroot=192.168.1.11:/home/jxm/nfs ip=192.168.1.22 init=/linuxrc console=ttyPS0
【嵌入式底层知识修炼】按键和LED共用IO口的分时复用扫描方法 文章目录01 - PCB原理图例程02 - 分时复用的注意项和设计2.1 - 注意项2.2 - 设计03 - 代码实现 只要我跑的速度够快,寂寞就追不上我 只要Key和Led切换速度够快,人眼就看不出来 ————小白   如果你存在按键Key和显示Led共用同一个IO时,需要分时复用的需求,则可以移植代码进行使用: 代码所占code少于0.5K 线程安全,中断安全 可移植性高,配置容易 注意:系统需要存在一个至少为1ms的时钟中断 01 - PCB原理图例程   举2个Key和Led共用IO口的 阅读详情

相关推荐

麦子学院-嵌入式视频(全)

麦子学院官网系统视频-嵌入式系统开发,视频无加密,包含官网上所有视频!

uboot移植视频笔记

麦子学院uboot移植视频源码和笔记

我的安卓之路 580

华为S5720交换机堆叠配置

S5720交换机,做下堆叠,两条线,交叉互联(即A交换机23口连到B交换机24口,A交换机24口连接B交换机23口)。PS:S5720堆叠可基于电口或者光口做,本次测试基于电口。 SWA配置 # 改名 [Huawei]sysname SWA # 最好先shutdown接口 [SWA]interface GigabitEthernet 0/0/23 [SWA-GigabitEthernet0/0/23]shutdown [SWA-GigabitEthernet0/0/23]interface G.

Markdown 6340

嵌入式系统开发-麦子学院(14)- uboot详解(1)

uboot

QiHsMing的博客 1249

学习stm32H7之路开始(STM32H7系列1) 前期准备,HAL库框架

2020.01.07 几个重要的参考网址 1.电子工程世界网 http://tags.eeworld.com.cn/tags/STM32H7 链接: link. 2.转:https://blog.youkuaiyun.com/simon223/article/list/2?t=1 链接: link. ———————————————— 版权声明:本文为优快云博主「Simon223」的原创文章,遵循 CC 4....

kengkengkeng963的博客 3408

三大主流交易接口实战指南:XTP、CTP与数字货币API的实盘接入解析

本文深入解析了量化交易系统实现实盘交易的关键环节,聚焦于三大主流交易接口的实战接入。详细介绍了证券领域的XTP、期货领域的CTP以及数字货币交易所API的核心特性、代码封装要点与风控实践,并提供了多市场接口整合的统一架构方案,为开发者打通量化交易的“最后一公里”提供了一份接地气的实战指南。

win55的博客 1373

麦子学院 系统移植篇之uboot 笔记

图片见pdf版本: b:跳转命令ldr:表示加载指定地址的值到程序计数器() 表示如果该代码处于SPL模式下,则赋对应值SPL(Secondary Program Loader)辅助程序加载器资源限制:一些处理器的启动 ROM 只能加载小容量的引导代码,而完整的引导程序可能太大。SPL 作为中间步骤,可以分阶段完成引导。例如:先将部分源码搬运到片上RAM,启动后初始化大容量的SDRAM进而搬运所有源码,逐步启动程序在该定义下:未定义指令异常跳转到自己本身陷入死循环如果不在SPL中,_undefined_in

qq_44650830的博客 633

Arduino IDE 2配置ESP32-S3工程全指南

嵌入式开发中,Arduino框架通过硬件抽象层(HAL)大幅降低MCU入门门槛,其核心在于板级支持包(BSP)与底层构建系统(如ESP-IDF)的精准协同。理解CPU频率、Flash模式、分区表、PSRAM等关键配置,本质是掌握SoC时钟树、SPI Flash通信协议、内存映射与FreeRTOS调度机制的技术原理。这些参数不仅决定固件能否启动,更直接影响功耗、实时性、OTA升级与大容量应用(如LVGL、TFLite Micro)的可行性。本文以ESP32-S3为例,聚焦Arduino IDE 2.x环境下从

root9的博客 781

嵌入式系统开发-麦子学院(5)——linux高级编程之文件IO管理

文件管理

QiHsMing的博客 903

Android 埋点信息分析——statsd框架

StatsPullAtomService 用以采集数据,并将数据填充到参数中,在StatsManager.PullAtomCallbackInternal 中会转换成 Parcel 格式传入到 native。 StatsCallbackPuller::PullInternal 中会回调StatsManager.PullAtomCallbackInternal 的onPullAtom,该函数中会回调StatsCallbackPuller::PullInternal 中定义的PullResultRecei

私房菜 2624

【图像处理】德里奇( Deriche)边缘检测器

Deriche边缘检测,同canny算法齐名,因此,知道canny原理,也有必要知道德里奇的检测原理。本篇专门针对德里奇算法展开讨论。

gongdiwudu的专栏 8681

嵌入式系统开发-麦子学院(3)——Linux C初级编程1

本篇文章主要讲了Linux C的初级编程。在麦子学院上对应于5小节的课程: c语言语法概述 c语言内存操作 c语言函数使用 linux 操作系统基础 GNU工具简介 c语言语法概述 GCC的使用及其常用选项介绍 GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objec...

QiHsMing的博客 1707

【第1章】基于FPGA的图像形态学处理学习教程——目录

本课程介绍图像形态学处理技术,通过腐蚀、膨胀、开运算、闭运算等算子对图像进行优化。腐蚀可去除边缘杂色使线条更清晰,膨胀能填补缺口修复图像,开运算擅长去噪,闭运算则用于修补断裂。课程内容涵盖四大形态学处理的理论分析、MATLAB仿真和FPGA开发实现,包括腐蚀、膨胀、开闭运算以及顶帽变换等操作,最后探讨形态学处理的实际应用场景。通过仿真测试和FPGA开发实践,帮助学员掌握图像"美容塑型"的核心技术。

MATLAB,verilog,python,opencv,tensorflow,caffe,C,C++ 337

技术追梦之旅-还在路上

最近由于部分工作的原因,稍停下了脚步,回望毕业这几年,想做个简要的总结,思考,以便更好的走向人生的下一站。   此次回首技术之路,无关生活。   从13年初开始正式工作,到现在2017年10月,已经有将近工作5年的了。在这5年中我接触了解的技术有:   1,各型号单片机系统开发; 2,无线2.4G组网通信; 3,TI,NRF,CSR的蓝牙BLE方案;

杯中江月 489

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

U-BOOT 配置按钮功能及使用教程

摘要:本文介绍了在U-Boot中配置GPIO按键功能的实现方法。通过在Kconfig中添加按键驱动和命令绑定配置,修改环境变量设置按键命令(如bootmenu),并在设备树中配置GPIO按键节点(包括引脚和电平设置),最终实现了通过物理按键触发U-Boot菜单的功能。当按下配置的User按键时,系统会显示包含存储挂载、固件更新、重启等选项的交互式启动菜单。

wdfk-prog.space 582

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

uboot源码结构、配置、编译和移植

uboot源码结构、配置、编译和移植

qq_52479948的博客 5252

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

收集一些嵌入式视频教程下载地址(有更好的在后面贴出链接哦)

收集一些嵌入式视频教程下载地址(有更好的在后面贴出链接哦)

qq_44884287的博客 2270

我与《深入浅出嵌入式底层软件开发》

++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.youkuaiyun.com/mr_raptor/article/details/6744480 ++++++++++++++++++++++++++++++++++++++++++ + 硬件-宝剑,软件-剑法,体系结构-内功 看过太多...

jinghuainfo 346

linux底层开发何去何从?

从事linux 设备驱动开发已经5年多了,主要从事的是sensor,touch, audio等驱动开发。   不知去华为如何呢?一更新简历,华为的人就会打电话过来,不过都回绝了。年龄渐大了, 目前感觉工作也没啥激情,有些想换下,就是不知去向何处?

linuxdeeper的专栏 821

最新麦子学院嵌入式开发系列培训教程

课程目录   第1阶段:嵌入式开发之基础阶段   第2阶段:嵌入式Linux应用开发阶段   第3阶段:嵌入式Linux之ARM体系结构与编程阶段   第4阶段:嵌入式Linux底层系统开发阶段   第5阶段:项目及选修阶段     下载地址:百度网盘...

weixin_43743712的博客 2494

Linux下Shell从入门到精通完整版

本套课程适用于初学者以及各类运维人员,我们可以通过本次的编程技术学习,明白并掌握企业里面的运维编程脚本,同时掌握企业运维到底要求会什么东西,有哪些是我们必须要掌握的知识。

嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发和嵌入式底层软件开发...

嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发和嵌入式底层软件开发 我们知道嵌入式操作系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式开发分两种,一种是硬件开发,一种是软件开发。简单来说,嵌入式底层驱动开发就是针对嵌入式操作...

王强的博客 6368

【总结】嵌入式上层和底层

上层在嵌入式系统中,上层关注于具体应用,需要更多的产品知识,技术方面更多的是在Task层次上实现对应的功能。如,我们要设计一款水质分析仪,那么,我们必须要学习水质分析仪相关的知识,需要测量哪些数据,需要设定哪些数据,数据如何采样,用户应用场景是什么等等。这些不同的功能,通常由task实现,如通信用的Modbus task,用于数据采集的AD task,用于计算相应物理量的测量task等等。这些,对产

風韻無聲 3941

嵌入式底层驱动开发笔记1

一、开发板 1\ bootloader的工作原理及作用? Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段 bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND, NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了,bootloader 的实 际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核,bootloader 和 Linux 内核的关系

m0_48507061的博客 2187

嵌入式系统开发-麦子学院(12)——ARM Bootloader开发

1. bootloader概述 boot 的目的: 关闭看门狗,中断,MMU,cache 配置系统工作时钟 配置SDRAM的控制器(行地址数、列地址数、块数、周期性的充电) 让sp指向可读可写的设备区间中,满足递减的规则SDRAM —用哪些模式,就要初始化哪些模式下的SP —每个模式值不能覆盖其他模式 代码搬移:①搬移速度问题 ②只把存储器的一部分代码执行出来,把存储在其他位置的代码搬移到内存,...

QiHsMing的博客 946
上一篇: 嵌入式系统开发-麦子学院(12)——ARM Bootloader开发
下一篇: 嵌入式系统开发-麦子学院(14)- uboot详解(1)
QiHsMing
博客等级 码龄9年 263粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值