- 博客(108)
- 收藏
- 关注
原创 C++ vector的reserve和resize详解
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size! 原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 ...
2020-01-20 14:12:54
710
原创 UCOS-II任务与OSCtxSw详解
作者:GWD 时间:2019.12.16一、 任务切换详解假设实现TASK1->TASK2的切换1.代码跟踪int main(void)OSTaskCreate( )OS_Sched( );OS_TASK_SW( );注意: OS_TASK_SW( );只是一个宏,代替了OSCtxSw()PendSV_HandlerPendSV_Handler_Nosave2、OSCt...
2019-12-16 21:03:14
1512
原创 C#常用快捷键总结
## 作者:GWDCtrl + M + O: 折叠所有方法Ctrl + M + M: 折叠或者展开当前方法Ctrl + M + L: 展开所有方法解决VS2010中工具箱的的不见的问题:按快捷键Ctrl+Alt+X全屏:Shift+Alt+Enter注释选定内容:Ctrl+E+C/Crtr+E+U代码格式化:ctrl+E+F===========================...
2019-11-22 18:52:51
1702
原创 韦东山第二期——1.2_字符设备驱动程序之编写编译
作者:GWD 时间:2019.8.271、先写这两个,应用程序必须要告诉内核有这个程序,应用程序中需要什么接口, operation结构体中就有对应的接口,定义这个结构2、将这个结构告诉内核内核怎么调用这个函数呢——第一个驱动的入口函数3、但是每个驱动都有自己的入口函数,内核怎么知道哪个设备对应自己的入口呢?答:要修饰一下,用module_init这个宏来修饰。这是一个结构体,...
2019-08-27 21:35:59
629
原创 韦东山第二期——1.1_字符设备驱动程序之概念介绍
作者:GWD 时间:2019.8.271、驱动的框架C库根据不同的swi值进入内核调用sys_open、open_read函数。2、应用程序怎么和我们的设备对应起来答:驱动设备框架...
2019-08-27 21:30:18
323
原创 韦东山衔接班——4.4_构建根文件系统之构建根文件系统
作者:GWD 时间:2019.8.26一、创建○1中的两个设备文件1、首先看一下PC机上的这两个文件夹是怎么样的这两个均是字符型设备,主设备号为5/1,次设备号为1、32、在自制根文件系统中加入这两个文件夹和设备号。...
2019-08-26 21:46:37
888
原创 韦东山衔接班——4.3_构建根文件系统之busybox
作者:GWD 时间:2019.8.26注:Linux中交叉编译用CROSS开头配置编译busybox1、解压busybox2、make menuconfig出现配置菜单在readme或者install中会有介绍怎么编译,第8行默认安装到PC中,但我们是安装到ARM所以要采用后面的形式安装到指定目录中。3、编辑Makefile使其支持交叉编译,新版的busybox可以4、微调bu...
2019-08-26 09:19:20
331
原创 韦东山衔接班——4.2_构建根文件系统之init进程分析
作者:GWD 时间:2019.8.25一、Busybox的引入根文件系统中有很多命令,命令就相当与一个应用程序,若一个一个编译很麻烦,linux中有一个busybox。当我们执行ls时候就相当于执行了busybox ls;上一节提到的init进程其实也是指向busybox的进程,我们要分析init进程要先找到busybox的源码。1、busybox中的init有哪些功能2、解析配置文件...
2019-08-26 08:49:29
311
原创 韦东山衔接班——4.1_构建根文件系统之启动第一个程序
作者:GWD 时间:2019.8.25一、内核怎样启动应用程序1、/dev/console是终端,下面两个dup是复制,读/写都来源于这个终端,这个终端对应于串口0;2、Run_init_process启动应用程序Execute_command是命令行参数字符串,如果我们设置init=XXX那么Execute_command就等于XXX这个字符串,也就是第一个应用程序是在命令行参数中...
2019-08-25 21:39:33
260
原创 韦东山衔接班——3.4_linux内核启动流程分析之内核启动
作者:GWD 时间:2018.8.25一、汇编部分到第一个C之前准备1、问:内核的工作答2、问:为什么有两个head.S答:其中一个是自解压代码,运行时先解压内核3、uboot中将参数写入结构体4、查找用于查看是否支持指定的CPU与单板5、在连接脚本中看一下3B这段存的是什么,所有架构初始化的信息都放在这个段中,然后启动后会进行遍历比较接下来就是要看一下在内核中a...
2019-08-25 21:23:56
324
原创 韦东山衔接班——3.1与3.2_linux内核启动流程分析之编译体验、配置
作者:GWD 时间:2019.8.25一、课程内容:概述:本节主要讲解了三种配置Linux内核的方法。1、问:内核文件在哪里?答:从网上下载2、问:烧录内核给arm的流程?答:1)、解压缩 2)、打补丁 3)、编译uImage然后烧写二、linux内核打补丁答:第一步:先解压文件:tar xjf linux-2.6.22.6.tar.bz2第二步:打补丁,-P是忽略补丁文件前...
2019-08-25 13:50:01
376
原创 韦东山衔接班——1.6_u-boot分析之U-BOOT启动内核
作者:GWD 时间:2019.8.24一、分析bootcmd1、bootcmd从何而来接上一节我们从这里开始分析跟踪getenv函数跟踪evn_get_addr函数,可知这些命令应该都存储在一个数组中继续跟踪这个数组,找到了目标BOOTCOMMAND的宏定义二、分析nboot命令从nand导入内核到0x32000000三、分析bootm命令1、flash上的内核...
2019-08-24 22:00:19
304
原创 韦东山衔接班——1.5_u-boot分析之U-BOOT命令实现
作者:GWD 时间:2019.8.22在u-boot的窗口输入命令会执行命令对应的函数,推测应该有个结构体对应命令的名字和函数(实际上这个结构体有在地址安排上有特殊之处,下文介绍)。一、分析run_commend1、提取参数,例如我们输入参数md.w 0提取参数后就在argv[0]、argv[1]中。2、find_cmd查找命令:在指定的段中查找名称一样的命令3、查找这个段中...
2019-08-22 22:53:31
236
原创 韦东山衔接班——1.3_u-boot分析之源码第一阶段
作者:GWD 时间:2019.8.21分析start.S(第一阶段,硬件相关)_start: b reset //第一条语句跳转到reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _...
2019-08-21 22:41:09
233
原创 韦东山衔接班——1.2_uboot分析之Makefile结构分析
作者:GWD 时间:2019.8.21一、分析Makefile的配置过程(从输入配置命令到创建config.h头文件的过程):1、顶层Makefile中执行100ask24x0_config后就相当于执行了D1882脚本,MKCONFIG是什么,在Makefile中查找一下,发现是源码中的mkconfig文件。2、执行配置时候就相当于执行了下面脚本3、接下来看一下mkconfig作...
2019-08-21 21:58:45
264
原创 韦东山衔接班——1.1_u-boot分析之编译体验
作者:GWD 时间:2019.8.21第一节:u-boot分析之编译体验一、Bootloader简介1、BootLoader的引入:bootloader就是一小段程序,系统上电后开始执行,初始化硬件设备、准备好软件环境、最后调用操作系统内核。Bootloader的实现非常依赖具体硬件,嵌入式系统中计时相同的CPU,它的外设也千差万别。2、BootLoader的启动方式:CPU上电后,会...
2019-08-21 21:22:44
267
原创 Linux 系统命令及其使用详解大全 (完整版 )
cat cdchmod chowncp cut名称: cat使用权限:所有使用者使用方式: cat [-AbeEnstTuv] [--help] [--version] fileName说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonblank...
2019-08-15 10:56:43
2462
原创 linux内核——14_Linux文件系统层概述
作者:GWD 时间:2019.8.2一、课程内容(一)、Linux中使用文件系统都分几个部分1、有关于Linxu中高速缓冲区的管理程序。分页机制、缺页中断、 buffer.c;2、文件系统的底层通用函数(对于硬盘的读写 分配 释放等 ,对于目录的节点管理 inode 内存与磁盘的映射);3、对文件数据进行读写操作模块 (VFS:虚拟文件系统 硬件驱动 和 文件系统的关系 pipe 快设...
2019-08-02 09:21:30
262
原创 linux内核——13_文件系统工作流程分析
作者:GWD 时间:2019.8.1一、课程内容1)、参数的接收2)、参数的解析3)、参数的应用4)、UBOOT 给KERNEL传入的参数是以 tagglist进行的5)、Kerbel给 busybox传入的参数 是以什么进行的?二、内核启动文件系统后,文件系统的工作流程1、busybox文件系统的初始化流程:parse_inittab(); file = fopen(...
2019-08-01 23:18:13
489
原创 linux内核——12_内核与文件系统衔接流程分析
作者:GWD 时间:2019.8.1一、课程内容1、独立的文件系统 (Linux) SHELL2、Linux种对文件系统的支持3、文件系统的层次4、熟悉每个文件夹里面都有大致什么东西5、分析文件系统的工作流程(起点: 目的:可以运行其他应用程序,可以响应用户的命令)二、起点分析:linux-2.6.22.6分析1、if (sys_open((const char __...
2019-08-01 13:33:34
326
原创 linux内核——11_文件系统概念解析
作者:GWD 时间:2019.8.1一、为什么学习文件系统1.是磁盘管理的目录2.是Linux中操作所有硬件设备的方式3.系统的功能机制注:大多数嵌入式公司都是在做根文件系统,华为做一款手机,内核芯片厂商会提供,开始显示什么图片之类的都是文件系统。二、学习作用:1、文件系统也叫应用程序,写应用程序的时候不仅要存在文件系统中并且还要使用文件系统的诸多功能。大多数的嵌入式公司都在做文...
2019-08-01 13:19:13
366
原创 linux内核——10_内核信号量
作者:GWD 时间:2019.7.31一、系统信号signal sigaction1.在系统中什么是信号,都有什么信号2.在系统接收到信号后,他是如何处理的3.信号作用4、信号中断也是一种系统调用,在system_call中,do_signal.c这个才是关键二、do_signal.c分析1、信号是怎么被执行的2、信号是进程间通信的简单的消息,信号虽然不带任何信息。但是...
2019-07-31 21:56:19
474
原创 linux内核——9_操作系统启动初始化程序init2
作者:GWD 时间:2019.7.31一、课程内容1.内核如何进行多平台的适配,在内核中是如何认识这些板子的?结构体 machine_desc2.内核启动的整体流程3.认识一种高效的编程结构(代码段)二、从链接脚本看一下结构:vmlinux.lds.S1、分析init.arch.info.init.arch.info : { __arch_info_begin = .; *(....
2019-07-31 21:53:28
411
原创 linux内核——8_操作系统启动初始化程序init
作者:GWD 时间:2019.7.31一、初始化代码1、起点:磁盘引导程序,需要将内核等移入内存进行运行,并初始化多种模块和硬件2、终点:运行第一个应用程序——系统的根文件系统3、程序一开始运行就不断的在创建新的进程,但是如果有别的驱动之类的发生了中断就会去执行别的,执行完中断再回来执行这个初始化,子进程执行shell,父进程等待回收。二、void init(void)分析1、voi...
2019-07-31 21:48:34
1211
原创 韦东山嵌入式第一期学习笔记DAY_24——18_9_五点法校准法理解
作者:GWD 时间:2019.7.31一、课程内容概述:本节课讲解了LCD触摸屏的五点校准算法;1、问:触摸屏为什么需要校准?答:回答这个问题就是要明白触摸屏的误差产生在哪里。我们知道触摸屏和lcd是两个不同的平面组装起来用的,但是由于组装工艺等问题两个平面不是完全重合的。由此我们可以推测出误差就是产生在触摸屏的x、y的与原点距离和lcd显示屏的x、y的与原点距离距离与理论计算不同;2、...
2019-07-31 08:40:00
447
原创 linux内核——7_操作系统的引导和启动程序
作者:GWD 时间:2019.7.30一、Linux操作系统的引导(一)、课程内容1、Linux是如何从硬盘中读出的2、Linux在启动的时候是如何拿到硬件参数的3、Linux在初始运行中都做了什么trap.c trap_init()mktime.c time_initsched.c sched_init4、BIOS/Bootloader:由PC机的BIOS(0x...
2019-07-30 21:55:38
545
原创 linux内核——6_操作系统进程销毁
作者:GWD 时间:2019.7.30一、打开exit.c注:syscall、do_xxx基本上都是中断调用的函数1、看一看谁调用了do_exit2、内核的销毁流程1)、exit是销毁函数-----一个系统调用----do——exit,首先该函数会释放进程的代码段和数据段占用的内存;2)、关闭进程打开的所有文件,对当前的目录和i节点进行同步(文件操作);3)、如果当前要销毁的进程...
2019-07-30 12:44:10
508
原创 韦东山嵌入式第一期学习笔记DAY_24——18_8_使用定时器支持长按
作者:GWD 时间:2019.7.30一、课程内容概述:在触摸屏函数中加入了定时器函数,实现每10ms扫描一次触摸状态打印。在视觉上实现长按的状态1、注册一个定时器2、在定时中断处理函数中判断笔是否按下,按下则打印,否则退出3、实验效果1)、长按2)、滑动4、存在问题:没理解老师的代码加入3个判断函数有什么作用!!!...
2019-07-30 12:39:28
159
原创 linux内核——5_内核进程调度与进程切换
作者:GWD 时间:2019.7.29一、进程调度:进程被创建到了链表中,如何再进行进一步的调用和调度?进程调度:void schedule(void) 进程调度函数、switch_to(next); 进程切换函数;(一)、void schedule(void) 进程调度函数1、看一下哪里调用了schedule函数,在system_call中寻找也证明了,进程调度也是一种系统调用的...
2019-07-29 23:54:59
1114
原创 linux内核——4_内核进程初始化与创建
作者:GWD 时间:2019.7.29参考:作者:I_l_I来源:CSDN原文:https://blog.csdn.net/weixin_40853073/article/details/81873398一、struct task_struct分析我们可以把task_struct当成进程,这个结构体在初始化的时候被注册到进程数组中,分时技术进行多进程调度重点:进程的创建是如何的?Li...
2019-07-29 23:51:13
522
原创 韦东山嵌入式第一期学习笔记DAY_23——18_7_触摸屏编程_定时器程序优化
作者:GWD 时间:2019.7.29一、课程内容概述:本节课的代码改进了定时器应用用面向对象的手法改进了定时器函数注:定时器的使用思路,类似linux内核中的时间片的手法,一条主线上不断的打结,到了某个节点执行相应的动作就可以了。第一步、定时器初始化函数,每10ms进一次定时器中断第二步、和前面中断中面向对象的第一步一样,写一个函数指针,然后建立一个结构体变量第三步、注册和卸载定...
2019-07-29 10:09:03
281
原创 韦东山嵌入式第一期学习笔记DAY_23——18_6_S3C2440触摸屏编程_ADC中断
作者:GWD 时间:2019.7.29一、课程内容概述:本节课继续完善上一节课的代码,实现串口打印出触摸的x、y的坐标值1、进入自动测量X、Y值的模式2、写ADC中断函数如果笔按下才打印,否则就不再打印了3、要注意触摸屏的ADC转换是需要一定的稳定时间的,这里选用5ms。4、实验效果...
2019-07-29 06:25:40
199
原创 linux内核——3_(进程管理)系统的进程管理
作者:GWD 时间:2019.7.28一、系统的进程的运转方式1、系统时间:(jiffies系统滴答):CPU内部有一个RTC,会在上电的时候调用mktime函数算出从1970年1月1日0时开始到当前开机点所过的秒数给MKTIME函数传来的时间结构体的赋值是由初始化时从RTC(coms)中读出的参数 转化为时间存入全局变量中,并且会为JIFFIES所用;2、 JIFFIES 是一个系统的时钟...
2019-07-28 23:37:39
551
原创 linux内核——2_内核中断体系结构
作者:GWD 时间:2019.7.28一、课程目的:1.硬件的中断响应---->内核驱动中的中断2.系统调用的函数响应(sys_call)—>系统调用3.自定义中断----->软件的软中断模式4.信号中断(kill -signalnum)---->对了解信号的使用 创建 等5.系统的异常和错误-----》系统的异常获取 了解系统异常的作用二、linux的中断机...
2019-07-28 18:59:41
356
原创 linux内核——1_操作体系结构与功能流程
作者:GWD 时间:2019.7.281、课程目录2、操作系统服务层3、操作系统的工作方式:1)、把操作系统从用户态 切换到 内核态 (用户应用程序 到 内核的流程)2)、实现操作系统的系统调用(操作系统服务层)3)、应用操作系统提供的底层函数,进行功能实现,操作系统的驱动结构4)、推出后从内核态切换到用户态4、操作系统内核中各级模块的相互关联1)、Linux内核的整体模块:...
2019-07-28 12:30:56
264
原创 韦东山嵌入式第一期学习笔记DAY_22——18_5_触摸屏编程_按下松开检测
作者:GWD 时间:2019.7.28一、课程内容概述:本节课主要写了一个程序,按下屏幕串口打印pen down,松开屏幕串口打印pen up(一)、程序流程图(二)、代码1、写出触摸屏初始化函数框架2、根据手册写出ADC初始化函数3、根据手册写出中断函数4、写ADC中断的功能函数5、写触摸中断的功能函数6、写抬笔、下笔状态检测函数7、实验效果...
2019-07-28 12:27:08
723
原创 韦东山嵌入式第一期学习笔记DAY_21——18_3_电阻触摸屏硬件原理
作者:GWD 时间:2019.7.26一、课程内容概述:简述了电阻触摸屏的工作原理1、电阻触摸屏的x、y轴可以看成是线性的两个电阻2、问:检测x、y轴坐标时候的流程?答:检测x轴坐标时候,x方向电阻通电,按压之后y轴导通测量yp的电压就可以判断x轴坐标,原理类似滑动变阻器。3、问:触摸屏的工作流程?答:4、处于等待时候XP,Y_ADC为高电平当触摸屏的外层被按下之后,X...
2019-07-26 12:23:16
259
原创 韦东山嵌入式第一期学习笔记DAY_21——18_2_S3C2440_ADC初始化编程
作者:GWD 时间:2019.7.26一、课程内容概述:写了ADC通道0的初始化函数,并在串口打印电压值第一步、根据手册写初始化函数(ADCCON第1位开始位,没说需要手动清0,就是会由硬件自动清0)#include "../s3c2440_soc.h"void adc_init(void){ /* [15] : ECFLG, 1 = End of A/D conversion...
2019-07-26 12:19:54
169
原创 韦东山嵌入式第一期学习笔记DAY_21——18_1_S3C2440_ADC硬件原理
作者:GWD 时间:2019.7.26一、课程内容概述:本节课主要讲解了ADC的原理和S3C2440手册的ADC部分(一)、1、ADC的原理及使用要点;(二)、手册分析(触摸屏相关的没写)1、ADC结构框图2、转换速度3、4、5、6、...
2019-07-26 12:17:16
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人