- 博客(30)
- 资源 (4)
- 收藏
- 关注
原创 Driver:模块参数、系统调用、字符设备驱动框架
1、模块参数 ./a.out xxx yyy zzz int main (int argc, char** argv) {...}// 用户空间 insmod xxx.ko mmm nnn 1)定义全局变量 2)将该全局变量声明为模块参数 'module_param (name, type, perm)
2017-02-27 22:54:54 574
原创 Driver:搭建linux驱动开发环境、内核驱动开发基础、导出符号、打印优先级
【什么是驱动程序】 uart_init uart_puts uart_gets 这就是裸板上的串口驱动 linux中将串口驱动封装了一套框架 其中实现了大量硬件无关的代码 只需要编程实现硬件相关的代码 linux下完成驱动相关的开发,需要三方面的知识: 1)硬件相关的知识 电路原理图
2017-02-26 20:55:01 719
原创 Porting:telnet远程登录开发板、制作并烧写cramfs和ext4和ramdisk三种格式根文件系统镜像
1、安装卸载模块不成功的问题 #:'insmod led_drv.ko #:'lsmod #:'rmmod led_drv 出现的问题: // rmmod: can't change directory to '/lib/modules': No such file or directory $:'mkdir lib/m
2017-02-25 22:52:50 1153 1
原创 Porting:linux内核的模块化、根文件系统的制作和自动挂载
1、关于内核模块($: linux #: 开发板) 模块化设计。 $:' vi drivers/char/Makefile obj-m += led_drv.o $:'make uImage -j4 $:'cp arch/arm/boot/uImage /tftpboot/ #:'tftp 48
2017-02-23 23:09:51 542
原创 Porting:linux内核编译、配置、修改配置文件、添加.c文件到内核
1、linux内核 www.kernel.org $:'uname -a $:'uanme -r // 查看linux内核版本,开发板上进入linux后是同样的命令。 早起经常使用的版本:linux 2.6.x 开发板上使用的版本:linux 3.4.39 linux最新版本:linux 4.x2、
2017-02-23 22:47:30 3965
原创 Porting:uboot简介、移植、代码阅读、uboot添加启动logo
1、u-boot简介 开源软件,德国的denx小组维护。 中国开源社区。// 提供了很多国人写的程序,嵌入式较少。 start.s ----> u-boot本质就是一个裸板程序。 u-boot属于bootloader的一种。 bootloader的功能:' 初始化硬件 + 加载启动操作系统。 u-boot号称通用的
2017-02-23 22:35:42 2412 2
原创 Porting:uboot烧写、linux内核烧写、根文件系统烧写:系统移植,nfs同步网络配置
1、什么叫系统移植? 根据硬件的变化,对已有的代码进行少量的修改,该套代码就很容易在新的硬件平台上运行,这个过程就叫做移植。 做移植的前提条件: 1)'对要移植的代码很熟悉; 2)'对目标平台的硬件差异比较清楚。2、移植课程主要内容 1)'u-boot的移植 bootloader:BIOS
2017-02-20 22:55:15 2769 2
原创 ARM:ARM中断异常的处理流程
裸板开发中,使用的就是现在的框架:……………………………………………………………… main (void) { // 一系列的初始化 while (1) { // 周期性的事物 } } ↓+↓ 异常处理 (异步事件的处理)………………………
2017-02-19 22:00:44 3640
原创 ARM:伪指令、伪操作、C和汇编混合操作、汇编控制LED
1、伪指令 指令本身不被ARM core所识别 但是汇编器可以把伪指令翻译成一条或多条ARM core认识的指令1.1 【ldr】---> 重点掌握 作用1:'将立即数存储到特定寄存器中,(汇编代码中使用=的) mov r0, #0x1ff 可以使用 ldr r0
2017-02-19 21:56:08 736
原创 ARM:ARM汇编语言与基础汇编指令
1、为什么要学习汇编语言? 1)嵌入式硬件上电的初始化代码是用汇编代码编写; 2)调试代码时,问题的解决有可能看汇编代码; 3)系统调优(提高产品整体运行效率); memcpy:C语言函数原型 :汇编代码 - 效率更高 4)有些逻辑,拿C语言无法实现 例如,用c访问r5寄存器
2017-02-19 21:51:39 21150 3
原创 ARM:单和多寄存器加载存储、状态寄存器、协处理、软中断、乘法、交换等汇编指令
ARM汇编指令大多数都可以条件执行。条件存储在NZCV位。1. 分支跳转指令 b{l}{cond} // 相对跳转指令,跳转范围±32M2. 数据处理指令 '移位操作 LSL / LSR/ ASR/ ROR / RRX '数据传输指令 MOV{cond} {s} , cond, 可以条件执行 s,
2017-02-19 21:48:30 1686
原创 ARM:ARM体系结构与编程、ARM指令流水线、ARM编程模型基础
1、读取g-sensor重力传感器的重力加速度值 cmd.c // 结构体中添加指令与对应函数 mmaxyz, mma8653_get_xyz mma8653.c // 补充函数:mma8653_get_xyz ( ) // mma8653_active ( ); mma8653_write ( ); show_acc ( );补充:
2017-02-19 21:31:21 1030
原创 Linux命令行命令速查手册(整理)
Linux命令行命令速查手册【2017.02.09-2017.02.11】Jan2017-02-09ls命令会列出当前所在目录的内容2017-02-09ls music注想要看看music目录中有什么内容,那么只需要输入ls命令,后面再跟上你想要查看其内容的文件夹名称2017-02-09“~”字符就像一
2017-02-12 19:06:08 6481
原创 ARM:g-sensor数据手册、函数原型atoi&itoa、读取加速度的基础
1、g-sensor数据手册 // mma86531.1 测量范围 ±2(1/256)±4(1/128)±8(1/64)1.2 从设备地址 0x1d R:0x3b W:0x3A1.3 几种工作模式 powerdown / standby / active1.4 内部有多少个寄存器(大概每个寄存器的用途) 50 多个寄
2017-02-10 22:39:57 1059
原创 ARM:g-sensor重力传感器电路原理图、I2C控制器数据手册、g-sersor芯片数据手册
1、电路原理图SCL - GPIOD6SDA - GPIOD7操作两个管脚实现I2C通信协议,两种方式:1) 软件直接控制;2) 软硬件结合。2、I2C控制器的数据手册2.1 '管脚的配置--->P 69. Function功能 ---> P 757. GPIODALTFN0功能选择SCL -GPIOD6 - Function1,SDA2 - 0xc00
2017-02-09 23:24:00 4280
原创 ARM:裸板shell编程完善(匹配命令、修复bug)、G-Sensor重力传感器驱动基础
vi中命令模式下:':e main.c // 打开main.c':bn // back next 回到下一个文件':bp // back prev 返回上一个文件一、匹配用户输入的命令,执行操作typedef struct {char* name;void (*cmd_func) (void);} _cmd
2017-02-08 22:33:49 908
原创 ARM:Makefile编写、链接脚本编写、裸板shell框架
《Makefile编写、链接脚本编写、裸板shell框架》' 工具:UtraEdit 代码编辑工具// 此工具里面 Ctrl + h 查看ASCII码vi中命令模式下:':e main.c // 打开main.c':bn // 回到刚才的.c文件1. 关于 \r \n的问题windows系统中:\r 回到行
2017-02-07 22:48:20 3312
原创 ARM:UART串口异步通信驱动编程
1. 串口的基本概念1.1 UART - 串行异步收发器 Universal Asynchronous Receiver/Transmitter串行/并行(课后补充)异步/同步:'异步/同步通信两者之间的区别' (课后补充)'单工/半双工/全双工:单工:任何时候数据只能朝一个方向传输半双工:数据可以向两个方向传输,任何同一时刻只能朝同一方向传输全双工:数据可以同时向两个
2017-02-06 22:50:25 6794
原创 ARM:LED控制编程、电路原理、CPU数据手册、位运算、交叉编译
一、LED控制编程1、电路原理图 【底板】env\DataSheet\x6818bv2.pdf 如果让LED1亮(D25),找到'对应标号'为GPIOC12为低电平 反之--------------------------------------高电平 【核心板】env\DataSheet\x4418cv3_release20150713.pdf
2017-02-05 11:53:54 1567
原创 ARM:嵌入式系统介绍、开发板环境设置、tftp实现文件下载、SecureCRT工具烧写
'《ARM》'【进程和线程的区别?】 "线程,是执行的基本单位,线程共享进程的资源"。 "进程,是资源分配的基本单位,调度的单位"。 一个进程里可以有多个线程。 每个进程都至少有一个线程,这个线程是进程的主线程。【进程间的通讯方式?各有什么特点?】【线程间的同步方式?】【共享资源的互斥策略?】【谈谈对嵌入式软件开发的认识】【给你一块开
2017-02-04 00:36:49 4254
原创 C++:继承、派生、多继承、补充:匈牙利命名法
一、继承/派生1. 作用:继承的目的是"延用旧功能",派生的目的是"增加新功能"。人类:属性(名字,年龄) 行为(吃,睡)教师:属性(名字,年龄,薪水)行为(吃,睡,教学)学生:属性(名字,年龄,成绩)行为(吃,睡,学习)class Human {name, age, void eat(), void sleep();};class Teacher
2017-02-02 23:10:00 400
原创 C++:特殊运算符的重载star、小括号、TYPE自定义类型、new和delete
一、特殊运算符的重载1. 取值运算符:* "指针解引用运算符"1)作用:让一个对象模拟指针的行为2)重载方式:成员函数方式class A {B & operator * (void) const {...}};友元函数方式class A {friend B & operator * (const A & rhs) {...}};/** 代码演示
2017-02-02 22:28:51 818
原创 C++:运算符重载
一、运算符重载1. C++允许将运算符定义为新的功能(用"运算符重载"的方式实现)2. 作用:便于理解。3. 运算符重载方式:1)成员函数方式2)友元函数方式/** 代码演示 **/#include using namespace std;class Number {public:/* explicit*/ Number(int a = 0): m_num(a)
2017-02-02 22:16:48 243
原创 C++:内嵌类、静态成员变量和函数、单例模式、友元函数和友元类
一、内嵌类1. 什么是内嵌类:内嵌类是指,一个类定义在另一个类的内部。2. 类内声明,类外实现的方法:返回类型 外部类::内嵌类::函数名(形参表) {...}/** 代码演示 **/#include using namespace std;class List { //双向链表public: List(): m_head(NULL), m_tail(NULL)
2017-02-02 22:08:54 721
原创 C++:析构函数、对象生命周期、类型转换构造、拷贝构造、拷贝赋值、深浅拷贝
一、析构函数 destructor1. 作用:在对象销毁之前释放对象所占用的资源 //自动执行,无法调用2. 析构函数格式:~类名(void) {...}/** 演示代码 **/ class A { public: A(int i = 0): m_data(i) { cout << "A(" << i << ")" << endl; } ~A(voi
2017-02-02 21:48:18 466
原创 C++:对象数组、对象动态申请和释放、类的定义和实现分开、this指针、常成员函数、时钟
一、对象数组的定义和初始化1. 对象数组的创建方法: //常量都是无名对象1)类类型 数组名[元素个数];2)类类型 数组名[元素个数] = { 数组的初始化列表... };2. 说明:1)在没有初始化列表的数组中,所有对象默认调用无参的构造函数。2)对于有初始化列表的数组中,可以用构造函数来生成"类类型"的无名对象来初始化数组内的元素。/** 代码演示 **/#
2017-02-02 21:32:14 9019
原创 C++:动态内存分配和释放、类型转换、面向对象编程、构造函数
一、C++动态内存分配/释放1. C++内存分配运算符: new / delete1)分配 / 释放单个对象的方法:new / deleteint *pi = new int; //返回分配的内存的首地址,int *类型...delete pi; //把pi指向的内存区域释放掉pi = NULL;2)动态分配单个对象并初始化的方法int *pi = ne
2017-02-02 21:08:03 587
原创 C++:布尔类型bool,函数重载、参数缺省值、哑元参数、内联函数、引用
"$: nautilus ." 打开文件夹"$: nautilus jy/c++" 打开指定路径的文件夹一、布尔类型 bool (C++98 新增的基础数据类型)bool 类型的变量有两个可能的值:1 / 0bool 类型的常量有两个可能的值:true / falsebool 类型的变量占用的字节数,因系统不同而不同,大多数系统为 1 字节。1. bool 类型的赋值:
2017-02-02 20:17:16 4760
原创 C++:string类及其成员函数汇总
/////////////////////////////////////////////////////////////////////////////////////////////////////***************C++ String 类常用成员函数***********///////////////////////////////////////////////////
2017-02-02 15:32:01 6071
原创 C++:C++背景、名字空间、结构联合枚举、字符串类型
《C++语言程序设计》C++面向对象,开发效率高,倾向与程序的设计(C语言倾向于程序的实现)一、面向对象1. 特征1)封装(结构体/函数)2)继承和派生3)多态二、C++的历史1979 年 Bjarne Sreopstrip 在BELL 实验室C Pre (C/C++/Unix)1983 年 C whit calss 实现投入使用1985 年 C F
2017-02-02 15:27:36 575
JVM-Java内存规范.png
2020-05-28
MVC模式用JSP实现用户管理(增删改查)核心逻辑图示.png
2020-05-09
Filter过滤器实现自动登陆核心逻辑.png
2020-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人