![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
韦东山第一期
宫伟迪
不是一定要赢,只是不想输
展开
-
韦东山嵌入式第一期学习笔记DAY_8——12_1_硬件知识_内存接口概念
作者:GWD 时间:2019.7.9一、课程内容:摘要:首先引入了GPIO、协议类、内存类外设的概念。重点讲解了CPU和内存控制器如何发送片选信号给内存类外设,以及内存范围的概念。1、问:CPU可以控制的外设有哪些种类?答:2、问:CPU如何发出时序信号给外设?答:首先写入数据给相关的寄存器,也就是相应外设的初始化。CPU会根据数据选择不同的模块发出不同的协议电平信号。GPIO和协议...原创 2019-07-09 09:15:06 · 297 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_14——14_6按键中断概述(S3C2440中断部分手册分析)
作者:GWD 时间:2019.7.17一、课程内容摘要:本节课讲解了实现了按键中断需要配置哪些寄存器。(一)、首先进行引脚相关寄存器的配置第一步:查看原理图确定需要设置的引脚及触发中断的方式。这四个引脚需要设置为中断模式EINT0->GPF0;EINT2->GPF2;EINT11->GPG3;EINT19->GPG11;这三个引脚需要设置为输出模式LE...原创 2019-07-17 12:59:26 · 195 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_14——14_7_按键中断程序实例
作者:GWD 时间:2019.7.17一、课程内容概述:这节课写了一个程序,主函数打印,按键中断中三个按钮分别控制三盏灯的亮灭,第四个按钮总控制三盏灯亮灭。(一)、编程思路第一步:void interrupt_init(void)函数打开对应中断的屏蔽;第二步:void key_eint_init(void)函数设置外部中断的一些参数第三步:void handle_irq_c(vo...原创 2019-07-17 13:13:45 · 430 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_19——17_6_LCD设置
作者:GWD 时间:2019.7.24一、课程内容:完善上节课的程序,实现设置4.3寸LCD的参数与,第一步:设置LCD显示屏的参数#define LCD_FB_BASE 0x33c00000lcd_params lcd_4_3_params = { .pins_polarity = { .de = NORMAL, /* normal: 高电平时可以传输数据 */ .pw...原创 2019-07-24 13:12:27 · 210 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_19——17_7_LCD简单测试与完整框架梳理
作者:GWD 时间:2019.7.24一、课程内容概述:本节课完善了之前的程序bug,并且让显示器显示全屏红、绿、蓝三种颜色。1、新建lcd_test.c1、首先lcd_test函数要获得lcd显示器的参数,比如x,y的像素等等。所以要构建一个获得参数的函数,在上一层中。void get_lcd_params(unsigned int *fb_base,int *xres,int *yr...原创 2019-07-24 13:26:50 · 257 阅读 · 0 评论 -
超详细韦东山虚拟机/ubuntu安装arm-linux-gcc-4.3.2和注册root账户(附arm-linux-gcc-4.3.2下载)
作者:GWD 时间:2019.7.18Arm-linux-gcc-4.3.2下载链接链接:https://pan.baidu.com/s/1kWhQSF-LeWRyH9Si9OydIw提取码:z4io第一步:注册ROOT超级用户1、打开控制台,使用sudo passwd root设置root密码2、进入到/usr/share/lightdm/lightdm.conf.d/目录,使用s...原创 2019-07-18 00:58:36 · 1985 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_24——18_8_使用定时器支持长按
作者:GWD 时间:2019.7.30一、课程内容概述:在触摸屏函数中加入了定时器函数,实现每10ms扫描一次触摸状态打印。在视觉上实现长按的状态1、注册一个定时器2、在定时中断处理函数中判断笔是否按下,按下则打印,否则退出3、实验效果1)、长按2)、滑动4、存在问题:没理解老师的代码加入3个判断函数有什么作用!!!...原创 2019-07-30 12:39:28 · 155 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_20——17_8_LCD点、线、圆
作者:GWD 时间:2019.7.25一、课程内容:概述:实现LCD显示屏的画点、画线、画圈1、首先实现画点:关键是如何将需要显示的点,与显存对应起来。void fb_put_pixel(int x, int y, unsigned int color){ unsigned char *pc; /* 8bpp */ unsigned short *pw; /* 16bpp *...原创 2019-07-25 12:27:46 · 324 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_20——17_9_LCD显示文字
作者:GWD 时间:2019.7.25一、课程内容概述:实现LCD显示字符第一步、从linux内核中拷出font_8*16.c文件,并修改第二步、写字符显示函数extern const unsigned char fontdata_8x16[ ];static unsigned int fb_base;static int xres, yres, bpp;void font_...原创 2019-07-25 12:33:21 · 384 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_17——17_1_LCD硬件原理
作者:GWD 时间:2019.7.21一、课程内容摘要:本节课讲解了LCD液晶屏幕的工作原理,和时序;(一)、LCD液晶屏幕的工作原理1、问:如何从当前的像素点点亮下一个像素点?答:每一个CLK信号,电子枪会移动到下一个点;2、问:每一个点的颜色如何确定?答:在内存中存储了完整的每页的像素点以及没个像素点的RGB信息。点亮某个像素点的时候就复制过去。每个像素在FrameBuf...原创 2019-07-21 11:49:29 · 324 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_17——17_2_S3C2440_LCD控制器
作者:GWD 时间:2019.7.21一、课程内容;摘要:本节课主要讲解了S3C2440的LCD控制器手册,和颜色原理。1、问_S3C2440_LCD_CONTROLLER的功能?答:相当于显存与LCD屏幕之间的缓冲器a. 取数据 : 把framebuffer的地址告诉LCD控制器, bpp, 分辨率,LCD控制器取数据时通过DMA的不需要CPU运算b. 发数据 : 把时序告诉LCD控...原创 2019-07-21 11:55:26 · 218 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_24——18_9_五点法校准法理解
作者:GWD 时间:2019.7.31一、课程内容概述:本节课讲解了LCD触摸屏的五点校准算法;1、问:触摸屏为什么需要校准?答:回答这个问题就是要明白触摸屏的误差产生在哪里。我们知道触摸屏和lcd是两个不同的平面组装起来用的,但是由于组装工艺等问题两个平面不是完全重合的。由此我们可以推测出误差就是产生在触摸屏的x、y的与原点距离和lcd显示屏的x、y的与原点距离距离与理论计算不同;2、...原创 2019-07-31 08:40:00 · 440 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_18——17_3——17_5_LCD编程_框架——思路梳理
作者:GWD 时间:2019.7.22课程内容:分析LCD与S3C2440lcd控制器的框架,并写出一些结构体思路:Lcd.h->controller.h->s3c2440_controller.h->lcd_controller.clcd.h:包含了结构体,结构体内容为LCD的一些常用参数名称,分辨率、时序等等;lcd_controller.h:面向对象的手法创建了l...原创 2019-07-22 13:41:26 · 246 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记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 · 176 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记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 · 161 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记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 · 255 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_23——18_7_触摸屏编程_定时器程序优化
作者:GWD 时间:2019.7.29一、课程内容概述:本节课的代码改进了定时器应用用面向对象的手法改进了定时器函数注:定时器的使用思路,类似linux内核中的时间片的手法,一条主线上不断的打结,到了某个节点执行相应的动作就可以了。第一步、定时器初始化函数,每10ms进一次定时器中断第二步、和前面中断中面向对象的第一步一样,写一个函数指针,然后建立一个结构体变量第三步、注册和卸载定...原创 2019-07-29 10:09:03 · 277 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记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 · 195 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_8——12_2_硬件知识_不同位宽设备的连接
作者:GWD 时间:2019.7.9一、课程内容:摘要:本节课主要讲解了8bit、16bit、32bit外设地址线为什么不一样。1、问:不同位宽的内存类外设的接线有区别么?答:有区别可以从手册看出来。2、问:为什么8bit,16bit,32bit接线不一样?答:首先分析8位的外设,8位外设的存储空间是8位的1个字节,所以A0-A0就可以了,读取时候一次取出一个内存空间就可以了;16...原创 2019-07-09 09:18:49 · 273 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_8——12_3_硬件知识_时序图分析示例
作者:GWD 时间:2019.7.9一、课程内容(一)摘要:本节课写了一个程序,功能是在串口中输入不同的nor读写频率实时更改Nor运行代码的效率,观察led小灯的不同闪烁频率;分析了S3C2440的内存时序图和nor芯片的时序图。(二)写程序1、S3C2440手册与原理图内存控制部分分析由硬件原理图知道nor芯片的地址范围是0x00000000-0x08000000先发出地址信...原创 2019-07-09 13:22:54 · 544 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_12——13_6重定位_清除BSS段的C函数实现
作者:GWD 时间:2019.7.13一、课程内容摘要:本节课用汇编传参和符号表传参两种方式各写了一个代码实现用C实现代码重定位与bss段清0;讲解了符号表的原理及引用方式。1、问:符号表是什么?2、符号表怎么使用二、学习要点:1、问:C函数怎么使用lds文件中的变量abc?答:1)、在C函数中声明改变量为extern类型, 比如:extern int abc; 2、使用时, 要...原创 2019-07-13 10:30:44 · 273 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_12——14_1_中断与异常概念的引入与处理流程
作者:GWD 时间:2019.7.13一、课程内容摘要:本节课讲述了ARM处理中断的流程,没有代码任务1、通过母亲看书的一个例子简单的引入中断的概念;2、问:中断与异常有什么区别和联系?答:中断属于异常,中断体系实际上就是异常体系3、问:中断是如何被调用的?答:如上图简单来说,CPU检测到异常时强制跳转到0x18这个位置去执行,然后由软件分辨中断源并进行保存现场、执行中断函...原创 2019-07-13 12:15:28 · 227 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_9——(ARM知识点)ARM中sdram,nor flash,nand flash关系及区别
作者:GWD 时间:2019.7.10概述:开机上电时程序放在nor、nand中但是为了运行的速度,在初始化sdram(是一种外设,相当于电脑的内存条,不是片内资源)后要把程序复制到sdram中运行。4K片内ram的功能实际上等同于nor(速度上有区别)因为有nor时不用片内4K RAM,无nor时把nand的启动代码复制到片内4K RAM。一、nor、nand、sdram在嵌入式应用的简介...原创 2019-07-10 13:51:28 · 731 阅读 · 2 评论 -
韦东山嵌入式第一期学习笔记DAY_9——12_4_SDRAM的设置(S3C2440手册Member controller部分分析)
作者:GWD 时间:2019.7.10一、课程内容摘要:本节课写了一个代码,其功能是初始化SDRAM,然后往SDRAM指定位置写入一个数据,再从这个指定的位置处读出这个数据,若写入=读出则点亮led灯;二:编程思路:(一)、知识点1、问:开发板用的是什么型号的SDRAM,容量多大如何计算?答:海力士HY57V561620内存,4BAN:内部分为了4块;4M:每块有4M个内存单元;16b...原创 2019-07-10 13:58:49 · 226 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_13——14_4_und异常模式程序(解决了老师代码中不能触发und中断的大坑,深入理解了代码重定位)
作者:GWD 时间:2019.7.15一、课程内容:摘要:本节课程主要讲解了und(未知指令)中断过,并编写了一个程序当遇到未执行指令的时候串口打印一个字符串。深入思考了代码重定位。注意:这节课老师讲的代码有个大坑用老师给的代码时候去掉print1函数就无法输出异常信息,原因是老师给的deadc0de代码时有条件指令,前面的print1函数正好满足了条件从而被编译器识别为正常指令了。解决...原创 2019-07-15 11:39:43 · 322 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_10——13_1_段的概念_重定位的引入
作者:GWD 时间:2019.7.11一、课程内容摘要:本节课主要讲解了代码重定位的必要性,以及程序在nor中运行时变量不可更改的原因,最后写了一个程序验证在nor中的程序不可以更改。1、写一个有全局变量的代码,分别在nand与nor运行用来观察nor中的变量是否不可更改烧录过程特别慢,查找原因发现bin文件竟然有33K,所以要修改makefile代码段放在0,数据段放在0x80...原创 2019-07-11 12:53:21 · 188 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_10——(总结自己理解的代码重定位原理)13_2_链接脚本的引入与简单测试
作者:GWD 时间:2019.7.11一、课程内容:(一)摘要:本节课讲解了将代码中的数据段(.data)重定位到外部sdram(0x3000,0000),着重理解代码重定位的原理及流程,链接脚本是现象,代码重定位才是本质;(二)、为何要引入代码重定位1、问:代码重定位流程简述?答:第一步、链接得到elf文件,elf文件包含代码各段的地址信息;第二步、使用调试工具(对于裸板是JTAG...原创 2019-07-11 13:01:04 · 208 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_15——14_8定时器中断程序(定时器部分手册分析)
作者:GWD 时间:2019.7.18一、课程内容,写了一个代码利用定时器中断实现LED小灯0.5S闪烁一次(一)、S3C2440定时器部分手册分析:1、2、定时器0、1有一个8位分频器,可以有5中不同的分频数,这个数字存储在TCFG0和TCFG1中。3、TCNTBn和TCMPBn这两个寄存器,TCNTBn自减,当这两个寄存器中的数值相等时会产生稳定的占空比4、每一个定时...原创 2019-07-18 13:13:11 · 284 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_15——14_8改进上一节代码与用C实现面向对象编程思路分析
作者:GWD 时间:2019.7.18课程内容:在interrupt中注册中断,用C实现类似面向对象的函数指针结构体——构造类似面向对象中类的概念,所谓类就是有变量,有方法(函数)。一、思路第一步:在interrupt.c中定义一个函数数组;注:1、这种构造函数数组的方法适用于,程序需要相同类型但型号不同的外设,但是不想每次添加新的型号都在底层文件中修改设备名称的情况,比如LCD屏幕、...原创 2019-07-18 13:19:09 · 264 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_11——13_3_链接脚本的解析
作者:GWD 时间:2019.7.12一、课程内容(一)、摘要:本节课主要讲解了代码重定位的原理(链接脚本和代码重定位我在上一篇博文写了),写了一个清除bss段的代码。1、问:简述如下重定位过程?答:.data段的load addr与runtime addr不一样将会引起代码重定位(只是引起(告诉CPU这里需要重定位),并没有实质的重定位)data段在bin文件中0x30000000的...原创 2019-07-12 13:38:12 · 241 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_11——13_4_拷贝代码和链接脚本的改进
作者:GWD 时间:2019.7.12一、课程内容:摘要:本节课主要讲解了将之前start.S中的strb,ldrb(单字节操作)换成str,ldr(4字节操作)减少硬件的访问次数和ALIGN函数实现的代码4字节对齐;1、问:是怎么减少硬件访问次数从而优化strb的?答:使用strb,ldrb若操作16字节数据硬件总共访问32次;改进完成后访问12次2、问:一次操作4字节时怎么选择...原创 2019-07-12 13:42:32 · 154 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记DAY_11——13_5_代码重定位与位置无关码(绝对地址与相对地址)
作者:GWD 时间:2019.7.12一、课程内容:摘要:本节课讲解了整体的代码重定位与位置无关码,其中重点和难点是位置无关码。实现第二种方法的代码重定位:在第二节课讲的第一个代码实现的功能,是分段重定位的,本节讲的是整体形式的链接脚本。1、问:位置无关码怎么理解?(很关键,一开始没理解!!!!)答:位置无关码说白了就是相对跳转指令与绝对跳转指令的关系。譬如bl 0x30000478的意...原创 2019-07-12 13:46:45 · 913 阅读 · 1 评论 -
韦东山嵌入式第一期学习笔记DAY_16——15_1_Nor Flash原理及硬件操作
作者:GWD 时间:2019.7.19一、课程内容本节课没有代码任务,主要讲解了nor_flash的一些知识,并结合Nor的手册在uboot中进行读写、擦除等试验1、问:nor和nand有哪些区别?答:2、问:MX29LV800手册中word和byte有什么区别?答:word是16位宽,byte是8位宽;3、问:nor_flash和S3C2440的连接与写程序的地址有什么联系?答...原创 2019-07-19 10:03:40 · 282 阅读 · 0 评论 -
韦东山嵌入式第一期学习笔记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 · 719 阅读 · 0 评论