在通信协议-SPI小节,我们已经对SPI协议进行了详细的介绍,这里就不在重复赘述。
一、S3C2440上的SPI
1.1 SPI概述
SPI的使用位于S3C2440芯片手册的第23章。S3C2440包含了2个SPI,每个SPI都有2个分别分别用于发送和接收的8位串行移位寄存器。
一个SPI时钟周期
1-->修改板级文件arch/arm/mach-s3c2440/mach-mini2440.c
步骤:
1->添加引用 #include <linux/i2c.h>
2->添加IIC设备信息
static struct i2c_board_info i2c_devi
在通信协议-I2C小节,我们已经对I2C协议进行了详细的介绍,这里就不在重复赘述。
一、S3C2440上的I2C
1.1 I2C概述
I2C的使用位于S3C2440芯片手册的第20章。S3C2440可以支持一个多主控I2C总线串行接口。一条专用串行数据线(SDA)和一条专用串行时钟线(SCL)连接
上一节 我们学习了:
网卡驱动介绍以及制作虚拟网卡驱动: http://www.cnblogs.com/lifexy/p/7763352.html
接下来本节,学习网卡芯片DM9000C,如何编写移植DM9000C网卡驱动程序。
1.首先来看DM9000C原理图
如下图所示:
前面一节简单分析了Linux内核网卡驱动程序的框架,并编写了一个虚拟网卡驱动程序。这一节我们开始学习网卡芯片DM9000C,尝试将官方提供的DM900C网卡驱动程序移植到jz2440开发板使用的内核里。
内核版本:Linux-3.4.2
官方网卡驱动版本:2.09
1、DM900C连接方式
DM
网络对于嵌入式系统来说必不可少。可是S3C2440没有集成以太网接口,所以要想使S3C2440具备以太网的功能,就必须扩展网卡接口。我们使用的Mini2440就是外接DM9000EP,使其可以与以太网相连接。DM9000和DM9000EP主要是封装不一样,其他基本都是一样的。
一、DM9000介绍
前面学习了Linux内核中Nand Flash驱动程序的编写,现在继续学习如何编写NOR Flash驱动程序,在编写自己的NOR Flash驱动前,我们还是先来弄清楚NOR Flash驱动程序编写的框架。
我们知道在MTD系统层次下,Flash硬件驱动通过mtd_info结构体和上层的设备层进行交
在上一节中,不知道你有没有注意到,以NOR方式启动u-boot后,运行有一行信息:
输出Flash信息这一部分代码是位于board_init_r阶段,执行initr_flash()函数的输出结果。
我们开发板上搭载了型号为S29AL016D70TF102的2MB大小的NOR FLASH,这里输出
一、Nand Flash命令
1.1 命令表
对Nand Flash的操作需要发出命令,下面有个Nand Flash的命令表格,那么我们可以此表格上的命令来访问我们的Nand Flash。
针对每一个命令的时序可以参考Nand Flash芯片使用手册。下面我们将会分析一些常用命令的时序。时序中
一、Nand Flash介绍
Flash 是闪存,可以反复读写的一种存储介质,掉电后数据不会丢失。目前Flash主要分为Nor Flash 和Nand Flash。
Nand Flash和Nor Flash比较:
Nor型Flash采用的SRAM接口,提供足够的地址引脚来寻址,可以很容易的存取其片
如果我们的系统要用GUI(图形界面接口),这时LCD设备驱动程序就应该编写成frambuffer接口,而不是像之前那样只编写操作底层的LCD控制器接口。
什么是frambuffer设备?
frambuffer设备层是对图像设备的一种抽象,它代表了视频硬件的帧缓存,使得应用程序通过定义好的接口
在上一节我们介绍了linux系统的输入子系统的基本框架,并进行了源码分析。
这一节我们将尝试向input子系统注册设备驱动,这里我们编写按键驱动,通过MIni2440上的6个按键来模拟键盘中的A、B、C、D、E、F。
一、按键硬件资源
1.1 硬件接线
查看Mini2440原理图、S3C2440数
在上一节我们介绍了LCD的硬件基础知识、以及S3C2440 LCD控制器相关的寄存器。这一节我们将会动手在LCD上显示一幅日落的图片。
一、LCD初始化编程步骤
1.1 初始化GPIO,引脚复用
在上一节我们介绍了S3C2440这些引脚对应的LCD TFT上的引脚。这里就不在重复介绍了。
一、LCD硬件原理
要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/24
直接指定代码段,数据段,BSS段的起始地址
-Ttext startaddr
-Tdata startaddr
-Tbss startaddr
示例:
arm-linux-ld –Ttext 0x0000000 led.o –o led.elf
一下摘自Linux公社ld指令详解
我们对
1、前提准备
硬件环境:
笔记本电脑
软件环境:
裸机安装Windows10_64位
VMWare版本:VMWare WorkStation 14Pro
Ubuntu版本:Ubuntu16.04LTS
总结:开发环境是主机安装windows10家庭版,然后使用vmware创建Ubuntu虚拟机
作者:彭東林
郵箱:pengdonglin137@163.com
QQ:405728433
開發板
TQ2440 + 64MB 內存 + 256MB Nand
軟件
Linux: Linux-4.9 (https://github.com/pengdonglin137/linux-4.9 )
对于任何的知识来说,了解了理论的知识,知道了设备树怎么解析用以代替传统的范式之后,我们需要知道怎么使用设备树。对于使用我们分两部分,一部分是它有哪些接口,能做些什么,至于怎么编写dts文件本章不讨论。主要包括两部分:
(1)对于设备树,编译和设备启动后,怎么来查看设备树的信息,怎么用来debug
uboot将一些参数,设备树文件传给内核,那么内核如何处理这些设备树文件呢?本章就kernel解析设备树的过程和原理,本章的主要内容以Device Tree相关的数据流分析为索引,对ARM linux kernel的代码进行解析。主要的数据流包括:
(1)设备树对于内核的意义(2)从u-boot传
1 传递dtb给内核
对于传统bootloader提供两种工作模式:一是启动加载模式(start loading),一是下载模式(downloading)工作在启动加载模式时,bootloader会自动执行bootcmd命令,比如:bootcmd=“nand read 0x100000 0x800