随笔分类 -  linux驱动及硬件知识

摘要:tftp 可传输单个文件,不能传文件夹 需要通过命令传输文件,略显复杂 ==一般调试kernel时,用uboot通过tftp方式启动,不用每次都烧写存储介质== nfs 在host linux(ubuntu)上的nfs文件夹中存放文件 开发板上mount ubuntu的文件夹,mount后就像自己的 阅读全文
posted @ 2017-12-20 16:26 liuwanpeng 阅读(1118) 评论(0) 推荐(0)
摘要:有了BOOT.BIN(fsbl+pmu+atl+uboot)、uImage、uramdisk.image.gz,dtb文件,就可以启动了。把上述文件统统拷贝到SD卡,并设置开发板为SD卡启动。 0. U BOOT启动参数 设置启动参数,然后启动 将上述参数固化到flash里,免得每次都要输入 修改e 阅读全文
posted @ 2017-12-20 16:19 liuwanpeng 阅读(8009) 评论(1) 推荐(0)
摘要:用petalinux的预编译目录里有rootfs文件,选择rootfs.tar.gz作为初始输入。 1.原始文件—— uramdisk 1.1 解压原始rootfs.tar.gz,得到若干文件 1.2 !!!制作空ramdisk.image 命令: 执行过程: 创建ramdisk.image,大小1 阅读全文
posted @ 2017-12-20 16:11 liuwanpeng 阅读(2010) 评论(0) 推荐(0)
摘要:0.顶层Makefile增加交叉编译器 顶层makefile: 改为: 1.生成.config _defconfig文件一般的芯片都有,找到以后,用如下命令,其实就是拷贝到顶层目录,并命名为.config,里面包含一堆配置,make时读取。 _defconfig文件在 arch/arm64/conf 阅读全文
posted @ 2017-12-20 16:07 liuwanpeng 阅读(2201) 评论(0) 推荐(0)
摘要:需要把若干文件打成大包,烧写到flash或者sd卡中,才能启动运行。 1.petalinux打包 petalinux packet打包时,需要petalinux的工程,限制太死了,不用。 2 windows环境SDK打包 2.1 制作BOOT.bin 用SDK的图形界面搞定也是一样的。 (markd 阅读全文
posted @ 2017-12-20 16:05 liuwanpeng 阅读(3834) 评论(0) 推荐(0)
摘要:petalinux使用太不方便,捆绑的太死板,也不通用,还不如直接用编译器来的简单高效。 本文说明从petalinux中提取出源代码的过程,前提是已经petalinux build完成。 1. uboot 编译结果里没有uboot的源码,可能是编译完了就删除了。 从git上下载吧。 2. linux 阅读全文
posted @ 2017-12-20 16:02 liuwanpeng 阅读(4311) 评论(1) 推荐(0)
摘要:ubuntu虽然能正常安装,但是build时会出现闪退情况,闪退后一切归零,没啥错误提示,改用centos来安装petalinux。 0.环境 vmware pro 14,centos 7.3 petalinux 2017.2 1.petalinux安装环境配置 除了python,其他都用yum直接 阅读全文
posted @ 2017-12-20 15:36 liuwanpeng 阅读(4694) 评论(0) 推荐(0)
摘要:1.MPSOC overview MPSOC是xilinx公司推出的新一代集成SOC,比ZYNQ厉害了一个等级。 熟悉一个芯片,不能一头扎进详细的数据手册,应该从overview开始大概了解,然后浏览user manual的前几章,具体外设用时细读。 文档:ds891-zynq-ultrascale 阅读全文
posted @ 2017-11-23 16:18 liuwanpeng 阅读(2360) 评论(0) 推荐(0)
摘要:MPSOC的linux开发需要使用petalinux,选择Ubuntu操作系统。 1.Ubuntu 1.1. Ubuntu安装 版本16.04.03 vmare版本:12.0 安装时注意选择“稍后安装”,否则是阉割版。另外,有个界面显示“删除整个磁盘”指的是虚拟机的磁盘,不会删除host上的内容,可 阅读全文
posted @ 2017-11-23 15:35 liuwanpeng 阅读(2865) 评论(0) 推荐(0)
摘要:ARM处理器从cortex系列开始集成NEON处理单元,该单元可以简单理解为协处理器,专门为矩阵运算等算法设计,特别适用于图像、视频、音频处理等场景,应用也很广泛。 本文先对NEON处理单元进行简要介绍,然后介绍如何在内核态下使用NEON,最后列举实例说明。 一.NEON简介 其实最好的资料就是官方 阅读全文
posted @ 2017-11-17 11:25 liuwanpeng 阅读(11953) 评论(2) 推荐(0)
摘要:14.1 网络设备驱动结构 网络协议接口层:硬件无关,标准收发函数dev_queue_xmit()和netif_rx(); 注意,netif_rx是将接收到的数据给上层,有时也在驱动收到数据以后调用。 网络设备接口层,net_device,统一接口名称,使上层独立于具体硬件。 设备驱动功能层,实现n 阅读全文
posted @ 2017-09-07 16:24 liuwanpeng 阅读(6293) 评论(0) 推荐(0)
摘要:18.1 设备树的起源 linux 2.6及之前,大量板级信息被硬编码到内核里,十分庞大,大量冗余代码; linux 2.6之前,引入了设备树; 设备树源于OpenFirmware,描述硬件的数据结构。由一些列节点node和属性property组成,通常包括下列信息: 本质上是画一棵CPU、总线、设 阅读全文
posted @ 2017-08-28 11:29 liuwanpeng 阅读(14312) 评论(2) 推荐(0)
摘要:结合实际代码和书中描述,可能跟书上有一定出入。本文后续芯片相关代码参考ZYNQ。 15.1 总体结构 如下图,i2c驱动分为如下几个重要模块 核心层core,完成i2c总线、设备、驱动模型,对用户提供sys文件系统访问支持;为i2c内部adpter等提供注册接口。 adpter,适配器,实际就是CP 阅读全文
posted @ 2017-08-23 11:31 liuwanpeng 阅读(9699) 评论(0) 推荐(0)
摘要:本章重点讲解思想、思想、思想。 12.1 linux驱动的软件架构 下述三种思想,在linux的spi、iic、usb等复杂驱动里广泛使用。后面几节分别对这些思想进行详细说明。 思想1:驱动与设备分离,linux采用总线、设备和驱动模型,驱动只管驱动,设备只管设备,总线负责匹配设备和驱动;驱动从标准 阅读全文
posted @ 2017-08-08 16:43 liuwanpeng 阅读(1739) 评论(0) 推荐(0)
摘要:10.1 中断与定时器 中断一般有如下类型: 内部中断和外部中断:内部中断来自CPU,例如软件中断指令、溢出、除0错误等;外部中断有外部设备触发 可屏蔽中断和不可屏蔽中断 向量中断和非向量中断,ARM一般是非向量中断,因为现在的中断源很多,如果做成向量,那中断向量表会很大。不过ARM的总异常还是按照 阅读全文
posted @ 2017-08-03 15:30 liuwanpeng 阅读(4851) 评论(0) 推荐(0)
摘要:8.1 阻塞与非阻塞IO 8.1.0 概述 阻塞:访问设备时,若不能获取资源,则进程挂起,进入睡眠状态;也就是进入等待队列 非阻塞:不能获取资源时,不睡眠,要么退出、要么一直查询;直接退出且无资源时,返回-EAGAIN 阻塞进程的唤醒:必须有地方能够唤醒处于睡眠状态的阻塞进程,否则就真睡不醒了。一般 阅读全文
posted @ 2017-07-27 17:03 liuwanpeng 阅读(2348) 评论(0) 推荐(0)
摘要:linux的GPIO通过sysfs为用户提供服务,下面是linux kernel里的说明文档,学习一下。 阅读全文
posted @ 2017-06-01 13:46 liuwanpeng 阅读(992) 评论(0) 推荐(0)
摘要:linux中并发无处不在,底层驱动需要考虑。 7.1 并发与竞争 7.1.1 概念 并发:Concurrency,多个执行单元同时、并行执行 竞争:Race Condistions,并发的执行单元对共享资源(硬件、软件全局变量和静态变量等)的访问很容易导致竞争 7.1.2 产生并发的情况 SMP下多 阅读全文
posted @ 2017-05-27 16:54 liuwanpeng 阅读(1068) 评论(0) 推荐(0)
摘要:磁盘操作是块设备的必备操作,需要认真掌握。 一、硬盘 1.硬盘文件 默认串口硬盘的设备文件为sda(第一块硬盘)、sdb(第二块硬盘).... 默认并口硬盘的设备文件为hda(第一块硬盘)、hdb(第二块硬盘).... 2.物理分区和逻辑分区 每块硬盘最多有四个主分区(包括真正的分区和扩展分区),编 阅读全文
posted @ 2017-05-25 10:08 liuwanpeng 阅读(5106) 评论(0) 推荐(0)
摘要:内存访问与映射是linux驱动常见操作,操作硬件时离不开内存的映射,本章比较重要。 11.1 CPU与内存、I/O 目前的嵌入式处理器,都不提供专门的I/O空间,而仅存在内存空间;各种外设寄存器都直接映射到内存空间,可以通过指针直接访问 x86一般提供专门的I/O空间, 用特殊指令访问这些空间; C 阅读全文
posted @ 2017-04-28 09:53 liuwanpeng 阅读(2396) 评论(0) 推荐(0)