ARM驱动开发
文章平均质量分 85
集合了平时工作以及学习中一些技术帖子,供参考学习。
漫步的风暴
敏于思而慎于言
展开
-
ARM AMBA AHB-LITE协议理解
1.AHB总线的特性主要包括四点:burst 传输,单时钟沿,非三态实现和支持的数据位宽为64/128一直到1024位,这里注意的是最低是64位?关于Burst传输的含义从别处看到的,如下:Burst传输实质就是只发送一次地址,某些总线发送每个数据都要对应发送其地址。但是Burst传输就是提高了传输效率,在一次传输过程中,只发送一次地址。但burst传输有应用限制,不是所有传输类型都适合burst传输,一般busrt传输应用在下面三种场景:Flash应用类型 只发送一次地址,之...原创 2022-05-05 13:57:32 · 1437 阅读 · 0 评论 -
Linux2.6.32驱动笔记(4)ioctl方法解析及mini2440-led驱动实现
摘要: 介绍了字符设备驱动的控制方式——ioctl,同时利用该方式在mini2440上实现led驱动。驱动中,除了read,write,open,close之外,还有很多的访问方式,其中对于设备的控制,ioctl是一种重要的方式。一、ioctl函数 int ioctl(int fd,unsigned long cmd,…) fd:要控制的设备文件描述符原创 2015-09-18 18:26:04 · 1852 阅读 · 0 评论 -
Linux2.6.32驱动笔记(3)分析应用程序read访问驱动过程
摘要: 利用objdump反汇编编译好的应用程序,分析了应用程序程序中调用read时时候,如何一层层的找到驱动中我们自己实现的对应的read方法。一、反汇编编译好的应用程序之前有一个读的应用程序read-mem.c,具体内容如下:#include #include #include #include int main(){ intfd = 0原创 2015-09-17 23:13:55 · 755 阅读 · 0 评论 -
Linux2.6.32驱动笔记(2)字符设备驱动编程模型
摘要:如何安装使用字符设备驱动,总结了字符设备驱动编程模型,初始化,注册等,最后分析了file_operations。一、如何安装使用字符设备驱动 参见内核模块,比如有一个驱动叫led.ko # insmodled.ko 创建设备文件节点,我们应用程序看驱动也是当做文件一样,这个设备文件节点就是这个作用。一般有两种方法,一种是相当于动态地,一种是静态的,我原创 2015-09-17 11:44:12 · 812 阅读 · 0 评论 -
Linux2.6.32驱动笔记(1)驱动开发概述及硬件访问技术
摘要:介绍了linux下驱动的分类和学习方法,描述了linux下硬件访问的思路和具体实现方法。一、linux下设备驱动分类 linux系统的设备常规分为字符设备(char device),块设备(block device)和网络设备(network device),对应的驱动也分为这三类。 字符设备:字符设备是一种按照字节来访问的设备,并且存取时没有缓存设备。这样的驱动通原创 2015-09-14 16:10:04 · 745 阅读 · 0 评论 -
Linux2.6.32移植到MINI2440(3)支持yaffs2文件系统
开发环境: 主机:fedora 14 虚拟机:vmware workstation 10 交叉编译工具:arm-linux-gcc 4.3.2 开发板:mini2440(2m nor ,64m sdram,256m nand) 一、获取yaffs2源码 我这里是从友善之臂的光盘里有一个压缩包,不过是zip格式的,可以在windows下解压,然原创 2015-09-07 16:28:53 · 814 阅读 · 0 评论 -
Linux2.6.32移植到MINI2440(4)移植+分析DM9000网卡驱动
开发环境: 主机:fedora 14 虚拟机:vmware workstation 10 交叉编译工具:arm-linux-gcc 4.3.2 开发板:mini2440(2m nor ,64m sdram,256m nand) 内核版本:linux2.6.32.2 上一篇帖子的uImage可以起yaffs2文件系统,但是起不了nfs原创 2015-09-07 21:39:25 · 1049 阅读 · 0 评论 -
Linux2.6.32移植到MINI2440(1)初步移植
根据友善之臂提供的手册——《MINI2440 Linux移植开发实战指南-内核部分-2010.9.9》以及网络上一些帖子,在此对他们的工作表示感谢,基本过程大都一致,主要是为了熟悉内核的基本移植方法,目的是为了能够生成一个MINI2440上可用的内核。 开发环境: 主机:fedora 14 虚拟机:vmware workstation 10 交叉编译工具:ar原创 2015-09-06 09:39:17 · 780 阅读 · 0 评论 -
Linux2.6.32移植到MINI2440(2)添加Nand Flash驱动,修改分区
开发环境: 主机:fedora 14 虚拟机:vmware workstation 10 交叉编译工具:arm-linux-gcc 4.3.2 开发板:mini2440(2m nor ,64m sdram,256m nand) 一、添加头文件 在/arch/arm/mach-s3c2440/mach-mini2440.c中 vim原创 2015-09-06 10:52:02 · 607 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(9) nor flash启动和nand flash 启动
在mini2440上,nor flash启动和nand flash启动可以满足不同的需要,这里进行移植,nor的启动移植比较简单,因为不需要进行代码的重定向,nand的启动相对复杂,这里先从nor开始,进入正题: 一.修改支持nor flash启动 第一步:修改mini2440.h 在第27行: #define CO原创 2015-09-02 19:27:28 · 1852 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(11) 第二启动阶段分析
回顾一下u-boot启动其一阶段做了哪些事: 第一:设置CPU为SVC模式第二:关闭看门狗第三:关中断和子中断第四:设置时钟第五:MMU关闭,清除cache和TLB,使能地址对齐检查等第六:初始化SDRAM 在我前面的分析里,第一阶段的最后,通过bl _main,跳到了arch/arm/lib/crt0.S里面去了,从这里开始时第二阶段的入口,原创 2015-09-05 17:39:58 · 777 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(10) 移植nand flash保存环境变量、添加分区
一.保存环境变量到nand flash第一步:修改mini2440.h由于我们执行saveenv这个命令,然后保存环境变量,u-boot的命令都是在common下实现的,切进去执行gerp “saveenv” –nr ./*.c,查找出如下结果:这里出现了很多,打开Makefile:# environmentobj-y += env_attr.oobj-y += e原创 2015-09-04 15:51:45 · 1446 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(8) nand flash 读写支持移植
mini2440上有一个k9f2g08u0c,进行nand flash读写移植原创 2015-09-02 10:21:59 · 1435 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(7) nand flash datasheet及arm9控制寄存器分析
我的MINI2440上有一个256M的nand flash,后面我们需要从nand启动u-boot,然后引导加载内核,再挂载根文件系统,这里先对其做一个较为细致的认识。主要是硬件管脚定义,控制方式,处理器的控制寄存器对其做一个了解,因为现在市面上nand的用途比较广泛,数码相机,mp3都要使用,进入正题。 一.nand flash datasheeet在移植好的u-boot原创 2015-08-29 11:05:47 · 1783 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(6) DM9000网卡移植
MINI2440上有一个DM9000网卡,关于这部分的驱动其实是比较复杂的,但是u-boot对其支持比较好,我们在移植的时候只需要修改少量的代码。这部分的代码主要在u-boot/drivers/net/下以及mini2440.h。 一.修改mini2440.h首先看drivers/net/Makefile,打开,第18行:obj-$(CONFIG_DESIGNWARE_ETH) +原创 2015-08-25 09:29:31 · 1000 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(5) Nor FLASH 读写支持移植
MINI2440有一个2M的NOR FLASH,NOR FLASH在MINI2440上其实是一个容量较小的ROM,不过它比NAND要好的地方在于可以执行代码。当开关打在nor的时候,就选择从NOR FLASH启动,NOR FLASH是直接映射到0x00000000地址上开始工作的。关于nor和nand的区别以及在mini2440上启动时候的差别请参看CSDN上的帖子,分析的挺好,这里不赘述了。原创 2015-08-24 19:45:48 · 1482 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(4) 第一启动阶段start.S等详细分析
u-boot的启动阶段分为两个,第一部分主要为start.S文件,帖子尽可能的分析了每一行代码的意思,查看了很多手册,分析的目的也是为了学习吧,写博客也是想给自己的学习留下点东西,这些东西网上其实很多,但是感觉看别人写的和字自己分析写一遍,差别好大。转载请注明出处,下面进入正题。第11行:#include //由kbuild自动生成,且不管#include //include下包含原创 2015-08-22 19:16:45 · 2058 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(2) Readme翻译分析
为什么要阅读README,我觉得是更加方便我们理解U-BOOT吧,尤其是在整体上的把握,当然,开发人员写了二十多万个字符,一共六千多行的README,里面有很多涉及到具体配置和使用的部分,其实这就是U-BOOT的使用说明书,这里着重关注几个部分部分,按照README的顺序,就当做英文阅读理解吧。1. 总结(summary)首先看看开发者对U-BOOT的定义:a boot loade原创 2015-08-21 15:26:31 · 1246 阅读 · 0 评论 -
U-boot-2014.04移植到MINI2440(3) Makefile分析
u-boot2014.04 makefile分析,包括配置过程,编译过程,mkconfig,u-boot.lds分析原创 2015-08-21 15:32:17 · 1362 阅读 · 1 评论 -
U-boot-2014.04移植到MINI2440(1) 初步探索移植
u-boot2014.04初步移植到mini2440原创 2015-08-21 15:14:45 · 2112 阅读 · 0 评论 -
一步步学习zynq软硬件协同开发(AX7021)【AXI-DMA】:AXI-DMA Scatter/Gather Mode(SG模式)
AXI-DMA有几种模式,其中最难使用的莫过于Scatter/Gather模式,以下简称sg模式,axi_dma的框架如下:在AX7021上,有4路PL端的网口,该网口的驱动和PS端的驱动有所差别,移植到我们自己的RTOS下,需要重新做驱动,除了phy的配置,mac的配置,最关键的部分在于网络协议栈的描述符的处理,这里也就要涉及到sg模式的使用,要对网络协议栈也有比较强的理解。该部分的...原创 2018-12-28 23:26:36 · 7468 阅读 · 1 评论 -
一步步学习zynq软硬件协同开发(AX7010/20)【FPGA+ReWorks】:创建自定义IP实现rtc读写
一、实验环境及目的板卡:AX7010Vivado版本:2017.4开发机:I5 2.2GHZ 8GB WIN7_X64参考文档:《ALINX黑金ZYNQ7000开发平台配套教程》实验目的:掌握ZYNQ PL端的开发流程,创建自定义IP的方法,在ReWorks下利用该IP对RTC进行访问。黑金给出的实验是如何创建自定义IP,但是并没有对代码进行解读,可能对于FPGA会的...原创 2018-12-26 22:11:22 · 4244 阅读 · 2 评论 -
一步步学习zynq软硬件协同开发(AX7010/20)【FPGA篇】:FPGA控制流水灯及verilog基本语法学习
一、实验环境及目的板卡:AX7010Vivado版本:2017.1开发机:I7 4.2GHZ 8GB WIN10_X64参考文档:《ALINX黑金ZYNQ7000开发平台配套教程》实验目的:掌握ZYNQ PL端的开发流程,熟悉verilog的基本语法。其实黑金给出了一个例子就是1S翻转一次四个LED等,这里我想通过控制一组LED灯的不同输出效果来学习verilog及f...原创 2018-12-01 15:17:38 · 2695 阅读 · 0 评论