嵌入式开发
文章平均质量分 57
shujuliu818
Where my heart get peace, where my self get home.
展开
-
LCD液晶屏显示问题分析
问题 b 的原因是过早设置了 LCDCON1 的 ENVID 位,如果过早打开此位,而图片没有随后立刻到来,那么就会有杂乱的条纹输出,而后图片到来之后,图片就没有从 Y 轴的零点开始输出,而是从白底时杂纹开始的地方一帧帧的刷新图片。问题 a 的原因是不要过早的设置 LCDCON5 的 PWREN 位,当此位被设置并且 GPBDAT 被写入 1 之后,背光就开始亮了,这亮的太早了。从视频中可以看到,图片刷新的时候有两个问题,LCD亮的瞬间有花屏,并且LCD每帧图片显示的时候不是从 Y 轴的零点开始刷新。原创 2022-09-24 23:12:58 · 1518 阅读 · 1 评论 -
LCD 控制器 LCDCON5(极性的初始化)
上一篇文章中提到过,实际的HSYNC,VSYNC信号的有效电平是通过LCD的dataSheet来确定的,通过前文已经分析得出, HSYNC VSYNC两个信号都是低脉冲有效,所以要配置电平的反转。LCDCON5(极性的初始化)原创 2022-09-23 18:55:44 · 743 阅读 · 0 评论 -
多级目录的Makefile
经常用到的三个函数 $(wildcard pattern) $(patsubst pattern, replacement, text) $(shell cmd)转载 2022-09-20 01:05:24 · 190 阅读 · 0 评论 -
编写操作norflash的裸机程序
3.写flash时由于CPU的A1接到了flash的A0上,所以每次地址都要增加两个字节,所以只能一次性写两个字节。如果每次写一个字节,那么类似 1, 3, 5,7...这样的奇数自己永远写不上,2,4,6...这样的偶数字节则能写上;4.写flash的时候每个指令周期只能写一次,如果需要继续写就要继续发出写指令。如果只发一次指令,则只能写上两个字节,后续的都写不上;2.如果要操作norflash,则需要在操作之前完成程序重定位,否则程序会卡死,因为在CFI模式下norflash不能读;原创 2022-09-10 02:06:39 · 350 阅读 · 0 评论 -
关于切换执行模式之后的寄存器设置
程序开机启动的时候,进入的是Supervisor模式,在引导程序切换到User模式的时候,需要设置SP。废了九牛二虎之力终于找到了问题所在,原来是引导程序切换到用户模式之后没有重新设置栈(SP)。今天写2440的引导程序的时候,出现了一个奇怪的现象,关机之后再开机发现串口没有打印。所以,如果模式切换之后没有设置栈(SP)的话,程序会没法执行。指针(Stack Pointer (r13) )存放的位置。原因是由上图可知每种模式之下r13都是不同的,r13既是栈。这张表是2440的通用寄存器和程序计数器表。原创 2022-09-04 23:33:03 · 147 阅读 · 0 评论 -
关于S3C2440进出 EXCEPTIONS 的理解
一. EXCEPTIONS(异常)包含的范围特别广泛,除了 System&User 模式,其他的都叫异常。上图为 S3C2440 的官方异常向量表。原创 2022-08-31 19:15:59 · 215 阅读 · 0 评论 -
SRCPND和中断未决寄存器INTPND以及外部中断未决寄存器EINTPEND分析
S3C2440的中断寄存器有6个中断裁决器,分为2级:第一级为5个,第二级为1个。一、三个中断未决寄存器:中断源未决寄存器(SRCPND)和中断未决寄存器(INTPND)以及外部中断未决寄存器(EINTPEND) SRCPND 寄存器有效位为32位,每一位对应一个中断源,某个位被置一表示相应的中断被触发,但我们知道系统 在同一时间内可以触发多个中断,只要中断触发了,相应的位就被置一,直到该位被清除为止,也就是说在同一时刻 SRCPND寄存器可以有多个位被同时置1,该位写1后被清0。...转载 2022-08-31 11:34:45 · 896 阅读 · 0 评论 -
存储器的介绍(ROM、RAM、NOR Flash、NADN Flash之间的区别)
它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。:NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。:NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。PROM:是可编程的ROM,PROM是一次性的,在软件写入后,就无法修改了,这种是早期的产品,现在已经很少使用了。转载 2022-08-24 15:34:04 · 1843 阅读 · 0 评论 -
ROM, SRAM, SDRAM的区别
不像DRAM内存那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,所以在主板上SRAM存储器要占用一部分面积,在主板上哪些是SRAM呢?二是插在卡槽上的COAST(Cache On A Stick)扩充用的高速缓存,另外在CMOS芯片1468l8的电路里,它的内部也有较小容量的128字节SRAM,存储我们所设置的配置数据。原创 2022-08-24 15:00:52 · 1259 阅读 · 0 评论 -
OPENWRT启动流程分析
原文链接:https://blog.csdn.net/fengfeng0328/article/details/83352459先来看框图 OPENWRT 系统启动框图:既然 Linux 内核从 flash 中读取,再看 MT7628AN 的 flash 分区布局: (注意“.”和“/”...转载 2019-08-28 11:10:13 · 258 阅读 · 0 评论 -
Makefile 嵌套执行
转自:http://blog.csdn.net/shallnet/article/details/37595465?utm_source=tuicool&utm_medium=referral 【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】在大一些的项目里面,所有源代码不会只放在同一个目录,一般转载 2016-06-03 17:27:21 · 1105 阅读 · 0 评论 -
指针函数 &函数指针
int (*fun(int))(int)分析以上代码 int ( *fun(int) ) (int) 其中 *fun(int) 是一个指针函数,它本质是一个函数。函数返回类型是某一类型的指针。首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变原创 2016-05-17 16:29:51 · 263 阅读 · 0 评论 -
Linux下gcc编译生成动态链接库*.so文件并调用它
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这转载 2016-05-17 15:27:28 · 264 阅读 · 0 评论 -
推荐!手把手教你使用Git
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,转载 2016-05-17 15:21:38 · 176 阅读 · 0 评论 -
C语言中fflush函数的使用方法
此函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。函数原型:int fflush(FILE *stream) ;函数功能:清除一个流,即清除文件缓冲区,当文件以写方式打开时,将缓冲区内容写入文件。也就是说,对于ANSI C规定的是缓冲文件系统,函数fflush用于将缓冲区的内容输出到文件中去。函数返回值:如果成功刷新,fflush返回0。指定的流没有缓冲区或转载 2016-02-29 10:12:34 · 1894 阅读 · 0 评论 -
Linux makefile 教程 非常详细,且易懂
转自:http://blog.csdn.net/liang13664759/article/details/1771246最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记,看转载 2016-02-28 18:44:09 · 314 阅读 · 0 评论 -
linux 下各个头文件的作用
转自:http://www.cnblogs.com/qiaoge/archive/2012/03/30/2425058.html2.6.30.4的头文件的位置和2.6.25.8的不一样,除去内核源码下的include目录外,在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目录下都有include目录的。#include转载 2016-02-19 10:15:31 · 315 阅读 · 0 评论 -
Ubuntu 10.10下安装ncurses-devel
解决Ubuntu 10.10 使用`make menuconfig`配置Linux 内核时,出现缺少'ncurses-devel'库支持。*** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' requires the ncurses转载 2014-09-26 11:17:16 · 413 阅读 · 0 评论 -
s3c2440 内存管理单元MMU学习笔记
学习了S3C2440内存管理单元MMU,主要参考了《嵌入式Linux应用开发完全手册》 (下载见http://www.linuxidc.com/Linux/2011-01/31114.htm)。有两篇文章也说得很详细,分别是http://www.linuxidc.com/Linux/2011-09/43526.htm 与http://www.linuxidc.com/Linux/2011-09/4转载 2014-09-26 11:23:28 · 609 阅读 · 0 评论 -
目标板挂载NFS时 需要nolock参数
目标板挂载NFS时需要nolock参数nfs方式共享主机文件作者:qtopia2009-7-310:00:00一. 检查nfs状态:#service nfs status二. 在主机创建nfs共享文件夹:#mkdir /nfsroot#e cho “/nfsroot 192.168.1.118(rw,sync,no_root_squash)”>/etc/ex转载 2014-09-26 11:48:16 · 1764 阅读 · 0 评论 -
Linux串口设置及编程
用户常见的数据通信的基本方式可分为并行通信和串行通信。并行通信是指利用多条数据传输线将一个资料的各位同时传送。特点是传输速度快,适用于短距离通信,但要求传输速度较高的应用场合。串行通信是指利用一条传输线将资料一位位的顺序传送。特点是通信线路简单,利用简单的线缆就可以实现通信,减低成本,适用于远距离通信,但传输速度慢的应用场合。常用的串口有RS-232-C接口(全称是“数据终端设备(DTE)转载 2014-09-26 11:33:05 · 376 阅读 · 0 评论 -
Linux中查看系统资源占用情况的命令
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。top: 主要参数d:指定更新的间隔,以秒计算转载 2014-09-29 10:34:21 · 409 阅读 · 0 评论 -
为Ubuntu配置ssh服务 方便远程登陆
ubuntu系统必须开启ssh服务后,XP或者其他的主机才可以远程登陆到Ubuntu系统。1,安装软件包,执行sudo apt-get install openssh-serverUbuntu缺省安装了openssh-client,如果你的系统没有安装的话,再用apt-get install openssh-client安装上即可。2,然后确认sshserver是否启动,执行ps -e转载 2014-10-11 10:40:57 · 482 阅读 · 0 评论 -
ubuntu图下安装软件出现You might want to run 'apt-get -f install' to correct these解决
今天在ubuntu下安装任何软件都提示以下错误:You might want to run 'apt-get -f install' to correct these:The following packages have unmet dependencies: kate : Depends: kdelibs4c2a (>= 4:3.5.9) but it is not going转载 2014-10-11 10:11:23 · 421 阅读 · 0 评论 -
configure: error: C++ compiler cannot create execut
TAG标签:摘要:如果有这样的错误信息: “configure: error: C++ compiler cannot create executables" 说明没装gcc或者装了gcc,没装g++,我这ubuntu10.10就是没有g++,最后是apt-get install g++,修复了congfiure不通的错误。 You need to install c++ on your co转载 2014-10-11 09:59:28 · 763 阅读 · 0 评论 -
Ubuntu设置环境变量
Ubuntu下设置环境变量有三种方法,一种用于当前终端,一种用于当前用户,一种用于所有用户:一:用于当前终端:在当前终端中输入:export PATH=$PATH:不过上面的方法只适用于当前终端,一旦当前终端关闭或在另一个终端中,则无效。二:用于当前用户:在用户主目录下有一个 .bashrc 隐藏文件,可以转载 2014-11-05 17:57:36 · 340 阅读 · 0 评论 -
Ubuntu下搭建MIPS交叉编译环境
费了九牛二虎之力,终于把MIPS交叉编译环境搭建好了。接下来跟大家分享一下这篇文章,里面的方法是我亲自试过的,绝对好用。谢谢写这篇文章的博主。MIPS是一个RISC的处理器体系结构,与之类似的还有x86,arm等,今天我们介绍如何在Ubuntu下搭建MIPS交叉编译环境:1.下载:在 http://buildroot.ucli转载 2014-11-05 17:56:19 · 1358 阅读 · 0 评论 -
wireshark过滤语法总结
转自:http://blog.csdn.net/cumirror/article/details/7054496做应用识别这一块经常要对应用产生的数据流量进行分析。抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)wireshark进行过滤时,按照过滤的语转载 2014-12-03 15:40:54 · 468 阅读 · 0 评论 -
使用GDB调试程序
1. 使用gdb调试程序1.1 编译源代码1.2 如何进入,退出gdb1.3 浏览源代码1.3.1 list命令1.3.2 如何在gdb查找字符串1.4 break point断点1.4.1 设置断点1.4.2 删除断点1.4.3 查看断点信息1.5 watch point监视点1.5.1 设置监视点1.5.2 查看监视变量的内容1.6 catc转载 2015-12-18 09:51:35 · 369 阅读 · 0 评论 -
vi命令
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi的基本概念 基本转载 2015-12-18 10:23:31 · 273 阅读 · 0 评论 -
Linux下的多进程编程初步(转载)
声明:为尊重原创特声明,本文转自 http://blog.csdn.net/wallwind/article/details/6899330 最近在学习linux环境高级编程,多进程编程算是编程中的最重要的一个部分了,本文让我学习和明白了很多,所以转载过来。让更多想多线程编程的人学习。只有顶到首页才能让更多的人学习。文章摘要: 多线程程序设计的概念早在六十转载 2016-01-11 10:59:11 · 356 阅读 · 0 评论 -
MMU的使用:地址映射
1(1)cpu核发出VA(2)VA转换成MVA,cache、MMU使用MVAVA->MVA的方法(硬件自动完成):if(VAMVA=VA|(PIDelseMVA=PA2(1)一级页表中的描述符 1)段描述符(描述符最低两位为10):保存段的起始物理地址 位[31:20]为段基址,低20位为0就是一块1MB的物理地址空间的起始地址;MVA[19:0转载 2014-09-26 11:11:34 · 589 阅读 · 0 评论