嵌入式Linux笔记

开发板IP:192.168.5.9
WINDOWS网卡IP:192.168.5.10
Ubuntu(服务器)IP:192.168.5.11

sourceinsight:编译程序文件

Filezilla:用来进行跨系统文件传输,Windows文件传输到服务器(Ubuntu),定期查看Ubuntu的NAT地址

Filezilla配置:

主机:192.168.5.9          用户名:root        密码:不用填        端口:22

GIT站点:邮箱:user@100ask.com,用户名:100ask

系统驱动和Linux驱动的概念

什么是系统驱动?

计算机里有很多 “硬件”(比如键盘、鼠标、显卡、U 盘、打印机等),它们的 “语言” 是硬件自身的电信号、芯片指令(比如 U 盘的存储协议、显卡的渲染指令),而操作系统(比如 Windows、Linux)的 “语言” 是软件指令(比如 “读取数据”“显示画面”)。

硬件和操作系统天生 “语言不通”,驱动程序就是两者之间的 “翻译官”

  • 当操作系统想让硬件干活(比如 “让显卡显示一张图片”),驱动会把系统的指令翻译成硬件能懂的电信号 / 芯片指令;
  • 当硬件有信息要反馈(比如 “键盘按了 A 键”“U 盘存满了”),驱动会把硬件的信号翻译成系统能理解的软件信息。

那 Linux 驱动是什么?

简单说,Linux 驱动就是 Linux 系统里的 “翻译官”—— 专门帮 Linux 系统和硬件 “沟通” 的程序。

比如你给 Linux 电脑插了个 U 盘:

  • 没有驱动的话,Linux 根本不知道 “插了个东西”,或者知道插了但不知道它是 “能存文件的 U 盘”,自然用不了;
  • 有了 U 盘驱动,驱动会告诉 Linux:“这是个 U 盘,支持读写,接口是 USB3.0”,Linux 就知道该怎么 “指挥” 它存文件、读数据了。

Linux 驱动的一个特点

        和 Windows 不同,Linux 的很多驱动是 “开源” 的,并且直接集成在 Linux 内核(系统的核心)里。这也是为什么很多硬件插在 Linux 电脑上能 “即插即用”—— 内核里已经自带了它的驱动,不需要像 Windows 那样手动装驱动程序。

        所以对于Linux驱动移植这个概念,我认为是在嵌入式领域中,由于Linux的开源性和集成性,可以通过把Linux系统移植到板子上面,然后通过Linux内核的硬件驱动来实现对各种硬件外设的适配。

注意:编译驱动程序的时候要注意把程序目录下的Makefile文件里面的内核路径修改为我们的内核路径

配置交叉编译工具链

交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序则是在 ARM 等其他平台上运行。具体的配置代码如下:

export ARCH=arm 
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- 
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueab
 ihf_sdk-buildroot/bin 

### 关于韦东山嵌入式Linux笔记及相关资料 韦东山的嵌入式Linux课程以其系统性和实用性著称,在开发者社区中有较高的认可度。以下是关于其相关内容的详细介绍: #### 1. **基础学习资源** - 韦东山提供了《嵌入式Linux应用开发完全手册》作为配套教材,该书涵盖了从基础知识到实际项目开发的内容[^1]。书中以IMX6ULL-Pro开发板为例,详细讲解了如何搭建开发环境、编写应用程序以及驱动程序等内容。 - 对于初学者来说,《Linux快速入门到精通视频》是一个很好的起点,它帮助理解Linux系统的底层原理及其在嵌入式领域中的应用。 #### 2. **具体技术细节** - 在驱动开发方面,韦东山总结了一系列针对不同外设(如LED、按键等)的驱动模板,并通过设备树进行了优化[^2]。例如,`chip_demo_gpio.c` 中的关键函数 `board_demo_led_init` 和 `board_demo_led_ctl` 展现了如何初始化并控制GPIO口的状态。 - 使用文件IO操作硬件是一种常见的SYSFS方式[^3]。这种方式允许用户无需深入内核即可完成简单的硬件交互任务。例如,可以通过如下命令设置GPIO状态: ```bash echo out > /sys/class/gpio/gpioXX/direction echo 1 > /sys/class/gpio/gpioXX/value ``` #### 3. **实践案例分析** - 开发板的第一个APP实验通常涉及创建一个最简化的C语言程序运行在目标平台上[^1]。这一步骤验证了交叉编译工具链的有效性以及基本功能测试。 - LED驱动实验则进一步展示了如何将理论转化为实际代码实现[^2]。其中包含了模块加载卸载机制 (`insmod`, `rmmod`) 及字符设备注册注销过程。 #### 4. **高级主题探讨** - 构建Bootloader (U-Boot), 内核, 文件系统构成了整个项目的基石[^1]。这些组件共同决定了操作系统启动流程及后期维护升级策略。 - NFS网络共享目录与TFTP服务器配合使用可以极大简化调试工作流。前者用于实时同步主机上的修改至目标机;后者负责固件下载部署。 --- ```python def gpio_control(pin_number, state): """模拟通过SYSFS接口控制指定编号的GPIO引脚""" direction_path = f"/sys/class/gpio/gpio{pin_number}/direction" value_path = f"/sys/class/gpio/gpio{pin_number}/value" with open(direction_path, 'w') as dir_file: dir_file.write('out') with open(value_path, 'w') as val_file: val_file.write(str(state)) # 示例调用 gpio_control(18, 1) # 设置 GPIO18 输出高电平 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值