自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hello, New World!

万物伊始,效率本源。大道至简,代码之禅。自建博客: https://janycode.github.io

  • 博客(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

Java-JVM内存规范(详细完整思维导图),包含物理内存与虚拟内存、内核空间与用户空间、java中需要使用的内存组件、jvm内存结构、jvm内存回收策略、JVM参数等...

2020-05-28

MVC模式用JSP实现用户管理(增删改查)核心逻辑图示.png

MVC模式 + JSP + 三层架构设计,实现对用户的登陆、登出、新增(注册)、删除用户、修改用户、查询用户、以及查询所有用户的基本核心逻辑。

2020-05-09

Filter过滤器实现自动登陆核心逻辑.png

Java中Servlet使用Filter过滤器实现自动登陆核心逻辑流程图(基本可以直译代码),特此分享供大家学习交流使用,如有不足之处请私信或者评论纠正。

2020-05-09

空空如也

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

TA关注的人

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