新闻详情

新闻详情

首页 / 资讯中心 / 详情

驱动——arm-linux应用程序开发

发布时间:2026/11/14 0:16:20来源:尧图网络
驱动——arm-linux应用程序开发
交叉开发——交叉编译环境准备1.串口工具用于充当开发板终端2.网络用于传输文件挂载 --- 确保开发板能ping通虚拟机ubuntu3.安装nfs并设置nfs服务目录mount -o nolock,nfsvers3 192.168.0.3:/home/linux/nfs /mnt4.在ubuntu的 /home/linux/nfs 中开发并编译程序在开发板的/mnt 目录下运行程序动态库移植1.使用arm-linux-gcc编译生成libtest.so2.编译生成可执行文件动态链接libtest.so3.arm端执行程序拷贝.so文件到开发板的/lib目录下库移植linux内核设备驱动开发boot rom(0地址) -- bootloader -- kernel -- rootfs1.boot rom 根据启动方式选择不同的存储设备启动bootloader2.bootloader 为 kernel 准备运行环境,引导kernel 启动3.kernel 启动到最后阶段,加载根文件系统bootloader:一个裸机程序,为内核启动准备环境,并引导内核启动1.初始化CPU(工作模式)2.初始化异常向量表3.初始化内存4.初始化堆栈5.初始化时钟6.关闭看门狗7.关Cache(数据Cache关闭, 指令Cache可以不关)8.关闭MMU9.初始化相关外设(串口/网口)10.集成相关外设11.搬移内核到内存, 向内核传参(根文件系统类型/位置/控制台)12.启动内核(PC指向内核首地址) --- 从此CPU控制权彻底移交给内核kernel:操作系统核心(一个复杂的软件)文件管理, 内存管理, 进程管理, 网络管理, 设备管理内核启动到最后阶段, 加载(挂载)根文件系统启动init进程 -服务程序 - shell - approotfs: 根文件系统(系统文件的集合)库文件系统程序/命令配置文件普通文件(txt. mp3. jpg)用户程序init进程linux启动SD卡启动系统上电之后, 先执行bootrom中的程序, 检测启动方式后, 将SD卡中的bootloader的前一部分拷贝到片上内存中, bootloader前半部分将内存初始化好, 将自己后半部分拷贝到内存中, bootloader将SD卡中的zlmage拷贝到内存的0x80800000地址处, 并向内核传参, 然后启动内核, 内核启动到最后阶段, 挂载SD卡中的根文件系统。tftp:bootloader通过tftp将ubuntu的tftp服务目录下的zlmage拷贝到内存的0x80800000地址处, 并向内核传参, 然后启动内核, 内核启动到最后阶段, 挂载ubuntu的nfs服务目录中的根文件系统uboot开源的(一个具体的bootloader)uboot命令:? / help 列出所有支持的命令printenv / print 打印环境变量setenv a 10000 设置环境变量saveenv 保存环境变量setenv a 删除环境变量(将环境变量的值设置为空)内核编译Kconfig 定义menuconfig中的配置选项make menuconfig 内核配置(编译选项) --- 配置结果保存在.config.configCONFIG_XXX yCONFIG_XXX1 nMakfile 使用.config中保存的变量obj-$(CONFIG_XXX) xxx.o编译准备设备驱动程序1.字符设备驱动 按字节流顺序访问(绝大多数设备都是字符设备)2.块设备驱动 数据可以随机访问(存储设备)3.网络设备驱动 集成复杂的协议栈(网卡设备) --- 按名字维护1. 执行 ctags -R 生成 tags索引文件 --- 包含当前目录即子目录中所有的符号2. vim打开目标文件 (必须和tags在同级目录下)3. ctrl ] 跟进4. ctrl o 回退 (小写O)5. vim -t demo_init(符号) 以搜索符号的方式打开字符设备驱动模板dev_t dev; struct file_operations fops { open read write release }; struct cdev cdev; demo_init() { //固定设备号 MKDEV(); cdev_init(); cdev_add(); register_chrdev_region(); //自动分配 alloc_chrdev_region(dev,0,1,DEV_NAME); cdev_init(); cdev_add(); class class_create(); device device_create(); } demo_exit() { //device_destroy(); //class_destroy(); unregister_chrdev_region(dev,1); cdev_del(cdev); } module_init(demo_init); module_exit(demo_exit);杂项(混杂)设备驱动: 主设备号为10struct file_operations fops { open read write release }; struct miscdevice misc { .minor name fops }; demo_init() { misc_register(); } demo_exit() { misc_deregister(); } module_init(demo_init); module_exit(demo_exit);ioremap(); 物理地址映射iounmap(); 解除映射copy_from_user(); 用户空间到内核空间的数据拷贝copy_to_user(); 内核空间到用户空间的数据拷贝
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉