自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 【Linux驱动】编译系统二(进程通信)

一、内核互斥与同步:1、信号量:2、自旋锁:3、原子整数操作:4、原子位操作:二、驱动的拥塞和唤醒:1、应用程序:2、底层实现:1)睡眠:2)唤醒:current:task_struct:进程...

2019-08-29 16:12:18 122

原创 【重拾Linux内核】内核源码目录结构

源码目录层次结构:1、平台无关的目录树:(C语言)drivers —— 驱动程序目录firmware —— 固件目录fs —— 存放文件系统的子系统信息ipc —— 进程间通信机制的实现目录init —— 系统初始化目录net —— 网络协议(裸机开发)include —— 存放内核所使用的头文件目录block —— 块,设备调用算法目录crypto ...

2019-08-29 11:03:40 253

原创 【Linux驱动】Input设备驱动

一、子系统整体框架:二、三个重要的结构体:1、struct input_dev:输入设备;2、struct input_hander:输入设备的处理方法;3、struct input_handle:用来关联某个 input_dev 和某个 input_handler;...

2019-08-24 23:30:18 147

原创 【Linux驱动】platform驱动架构

系统启动:start_kernel( void ) ——> rest_init ( ) —— > 启动内核线程kernel_thread( ),并执行kernel_init继续初始化——> do_basic_setup( void ) ——> driver_init( void ) ——> platform_bus_init( )完成虚拟设备初始化...

2019-08-24 23:28:41 187

原创 【Linux驱动】Linux内存映射机制(mmap实现)

一、Linux内存映射:1、截止arm7没有MMU,其之后片上加入了MMU器件2、MMU的作用:(1)负责虚拟地址到物理地址的转换;1)确定的数学公式进行转换;2)用表格存储虚拟地址对应的物理地址:tiny210使用第二种方法,并根据每次转换时查表的次数分为一级页表方式(以段的方式转换)和二级页表方式(以页的方式进行转换)。128M分成4K的块进行...

2019-08-24 23:27:47 284

原创 【Linux驱动】编译系统一(中断、定时器实例)

一、驱动中断实例:在open的情况下注册一个中断,使用一个中断处理程序用dev_id区分8个按键整体代码:代码详解:通过gpio的编号得到irq终端号中断注册函数 —— 为8个按键注册中断request_threaded_irq函数的参数描述中断类型宏定义——枚举部分宏定义的含义一个中断处理程序为8个按...

2019-08-23 15:04:20 288

原创 【Linux驱动】字符设备驱动

1、驱动分类:字符设备驱动:硬件读写以字节为单位;串口、块设备驱动:以块为单位;硬盘(一个扇区512bit)网络设备驱动:内核协议栈内存;网卡驱动、can驱动等;2、动态加载M和静态加载Y(编译选项):区别:1)编译选项不同:Y为内核,M为驱动;2)存在位置不同:Y在内核镜像(uImage)里,M在文件系统上;3)加载时机不同:静态加载随内核启动而启动,动...

2019-08-23 15:01:00 159

原创 【Linux内核】文件系统:proc、tmpfs、devfs、sysfs

内存虚拟文件 —— 使用与文件接口统一的操作来完成信息管理。一、procfs抽象文件接口,大量内核中的信息以及可调参数都被作为常规文件映射到一个目录树中/proc。则可通过echo或cat等文件命令对系统信息进行查取和调整,也可通过procfs获取内核参数。1、procfs的挂载:首先需确认内核支持procfs(默认支持) # mount -t proc none /...

2019-08-21 15:20:25 692

原创 【Linux内核】根文件系统完善

基于busybox制作可用根文件系统一、完善根文件系统:1、check程序运行库: /lib/从交叉编译工具目录拷贝libpthread.so libthread_db.solibresolv.solibrt.so2、check配置文件: /etc目录/etc/initab/etc/fstab:文件内容与格式介绍,man fstab...

2019-08-21 15:19:43 234

原创 【系统移植】实验五:将u-boot.bin从SD卡搬运到DDR内存中

<一>u-boot的链接镜像结构分析<二>board_innit_f函数分析<三>u-boot自举实现<四>relocate_code汇编自举代码分析<五>bord_init_f函数分析<六>主循环分析...

2019-08-21 09:05:31 394

原创 【系统移植】实验四:编写DDR初始化代码

一、DDR内存:在uboot.16K中要做的最重要的事情是:完成DDR内存的初始化,然后再把uboot.bin从flash加载到DDR中,在把地址跳转到DDR的地址上,开始运行uboot.bin。 1、DDR内存基本原理(16K文件运行的重中之重)2、DDR2的MRS和EMRS寄存器:(1)MES:(2)EMRS:(3)DDR2读写时序:1)读过程:...

2019-08-21 09:01:17 841

原创 【系统移植】实验三:UART显示指定内存中的数据

一、异步串行通讯UART:1、传输流程:Tx——>Rx,传输开始时拉低电平,传完 8bit二进制数 拉高电平传输完成,前提需约定相同的波特率(bit/s)。2、RS232串行通讯标准:(1)DB9 Male(主机端DTE)、 D89Female(设备端DCE) 9芯(2)电平范围:3、流控制:4、代码(建立寄存器列表):(1)初始化串口...

2019-08-21 08:58:43 240

原创 【系统移植】实验二:编写boot程序

一、编译、链接、汇编过程:预编译:展开#include、#define编译: main.c ——> main.s汇编:main.s——>main.o(目标文件)链接:将所有的main.o、xxx.o等.o文件拼起来变成一个main/elf格式文件,其在操作系统中可直接运行,在SD或者flash中不能直接运行,因其中有调试信息、段信息、码信息等,不是纯粹的二进制文件。...

2019-08-21 08:57:20 590

原创 【系统移植】实验一:修改uboot源码使其点亮LED灯

一、GPJ:GPJ0【8】GPJ1【6】GPJ2【8】:GPJ2_0、GPJ2_1、GPJ2_2、GPJ2_3涉及到四个寄存器的操作GPJ2CON(管理IO口)、GPJ2DAT(输入输出)、GPJ2PUD(上/下拉电阻)、GPJ2DRV(驱动)GPJ3【9】GPJ4【5】拓展:上拉/下拉电阻将高电平的选择权交给外围电路;若高电平为5V,则电阻上拉5V。...

2019-08-20 11:17:15 606

原创 【Linux内核】Busybox相关

一、内核启动参数:<一>系统启动流程bootloader(uboot) —— Linux Kernel(uImage)——Rootfs(Init)——Applications<二>启动环境配置uboot环境变量: printenv、setenv、saveenv、tftpboot、nand、read/write……baudrate 115200b...

2019-08-19 09:39:29 556

原创 【系统移植】概述性扫盲

一、移植的步骤1、确定目标机以及主机的连接方式;1)UART异步串行通信接口(串口):速率低,实时性强2)USB串行通信接口:速率快,驱动要移植修改3)TCP/IP网络通信接口:速率快(10-100Mbps),驱动要移植修改4)Debeg Jtag调试接口:方便快捷,价格昂贵2、安装交叉编译器;1)安装芯片厂商已经编译好的工具链(推荐)arm-none-lin...

2019-08-18 12:10:28 303

原创 【Linux操作系统】系统I/O大纲

2019-08-10 16:40:30 101

原创 【重拾C语言】结构体

一、结构体的定义:1、只定义一个新的数据类型,没有定义变量;struct Student{ int age; float score; char sex;};2、只能自己使用;struct Student2{ int age; float score; char sex;}st2;3、别的函数可以使用,但是定...

2019-08-10 16:36:10 182

原创 【重拾C语言】指针

一、指针的重要性:1、快速传递数据,减少内存消耗;2、使函数返回一个以上的值: 1)能直接访问硬件; 2)能够方便地处理字符串; 3)理解面向对象语言中基础;二、指针的定义:1、地址: 内存单元的编号; 从零开始的非负整数; 范围:4G【 0 — (4G-1)】;2、指针:...

2019-08-08 22:04:56 357

原创 【重拾C语言】函数

一、为什么需要函数?避免代码重复率高、有利于程序模块化和后期维护二、什么叫函数?逻辑上:能够完成特定功能的独立代码块;物理上:能够数据交互并且对数据进行处理。相当于黑匣子三、如何定义函数?函数返回值类型 函数名称(函数的形参列表){ 函数的执行体}实现某一个特定功能【注】1、return表达式的含义: 1)终止被调...

2019-08-08 18:18:19 151

原创 【重拾C语言】数组

为何需要数组?1、为了解决大量同类型数据的存储和使用问题;2、为了模拟现实世界;3、但数组空间大小一旦设置就不能改变,同时对数组元素进行操作并不方便;(数组非重点)一、一维数组(容器实现)1、定义: 1)为n个变量分配连续的存储空间; 2)所有的变量数据类型都必须相同; 3)所有变量所占的字节大小都必须相等。一维数组名不代表数组中的所有元素,...

2019-08-08 01:29:41 83

原创 【重拾C语言】流程控制

一、流程控制:程序代码执行的顺序。二、分类:<一>顺序<二>选择1、定义: 某些代码可能执行,也可能不执行,有选择的执行某些代码。2、分类:(1)if: 非零为真,是零则假 if(表达式) 语句1)范围问题:...

2019-08-06 21:43:29 154

原创 【重拾C语言】printf与scanf

一、printf():1、含义:将变量的内容输出到显示器上2、用法: 1) printf(“字符串”); 2)printf(“输出控制符”, 输出参数); 3)printf(“输出控制符1 输出控制符2……”, 输出参数1, 输出参数2, ……); 4)printf(“输出控制符 非输出控制符”, 输出参数);3、具体的输出控制符:...

2019-08-06 20:11:12 192

原创 【重拾C语言】学前10小问

1、CPU 内存条 硬盘 显卡 主板显示器 之间的关系 系统首先将硬盘中的数据/程序调入内存条当中,CPU读取内存中的数据/程序,将数据/程序的具体操作在相应的硬件设备上执行。主板相当于一个连接设备,使插在其上的所有硬件设备数据交互。2、HelloWorld程序如何运行起来的 由编译和链接生成.exe可执行文件,之后操作系统在后台执行.exe文件3、...

2019-08-06 11:58:25 281

原创 【ubuntu】下载好Linux系统后需要做的事以及当时遇到的问题是这样解决的

一、使用前操作:1、Check and install updates:      sudo apt-get update      //    应用升级      sudo apt-get upgrade    //     系统升级      sudo apt-get dist-upgrade   // 内核升级2、Install video graphics driver:   ...

2019-01-29 06:15:13 257

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除