- 博客(22)
- 资源 (4)
- 收藏
- 关注
原创 S3C2440驱动开发(十二)
内核启动流程内核启动分为两个阶段,内核引导阶段和内核启动阶段。内核引导阶段又可细分为,自解压搬运,内核启动前预处理。首先介绍自解压搬运流程,再介绍内核启动过程。(一)内核引导阶段(自解压搬运)前面章节已经介绍过bootloadert跳转到内核运行的过程,本节主要介绍内核自解压启动流程。上一节介绍了zImage文件的生成过程,zImage是可执行文件格式,是由arch/arm/boot/compressed/vmlinux文件通过objcopy转化的。而arch/arm/boot.
2022-03-24 15:47:55
541
原创 S3C2440驱动开发(十一)
内核编译分析确保在源码根目录下存在.config文件存在,若没有可从其他地方复制一个。然后执行make menuconfig命令配置内核编译选项。最后执行make命令进行编译。本节主要分析内核编译的Makefile,了解zImage生成过程。分析Makefile文件之前需对Makefile文件格式有一定了解,否则阅读内核Makefile文件会比较吃力。本文使用的内核版本为2.6.32.2。首先打开源码根目录下的Makefile文件,此文件称为顶层Makefile文件。在./Mak
2021-11-11 11:03:21
431
原创 S3C2440驱动开发(十)
Makefile介绍你需要一个名为‘Makefile’的文件去告诉make该干什么。通常情况下Makefile会告诉make怎么编译、链接一个程序。在一个大型项目中,GNU make工具可以自动识别哪些代码文件需要重新编译,以及使用哪些命令去重新编译。以下内容只是简要介绍makefile用法摘要,详细使用方法参考官方手册,或者参考Makefile教程(绝对经典,所有问题看这一篇足够了)_GUYUEZHICHENG的博客-CSDN博客_makefile这篇文章。Makefile格式如下:
2021-11-09 19:24:53
237
原创 S3C2440驱动开发(九)
vivi源码解析(二)继上面章节后,本节重点介绍vivi常用功能及实现原理。(1)Load加载命令加载命令,可以将程序或者文件通过串口加载到RAM和FLASH中,实现程序烧写功能。使用的数据传输协议是XMode协议。加载数据到FLASH中的流程为,先加载到RAM,然后将RAM写入FLASH中。写FLASH过程本文不再介绍。加载数据到RAM主要通过以下XMode协议解析函数实现。1 int get_record(void)2 {3 ...
2021-10-27 18:12:06
205
原创 S3C2440驱动开发(八)
Nand Flash驱动近些年来,相较于SDRAM和NAND flash存储器的经济性,NOR flash存储器价格高,这就促使了很多用户将启动程序放在NAND flash,需要执行的主代码放到SDRAM中。S3C2440A启动代码可以在外部的NAND flash中执行。为了支持NAND flash运行bootloader,S3C2440A内部有一个名为“踏脚石”的SRAM缓冲区。当系统上电启动时,NAND flash中的前4KB数据将会被自动加载到“踏脚石”中,这样加载到“踏脚石”中的启动代码将会被执
2021-09-24 18:44:52
1633
原创 S3C2440驱动开发(七)
BootloaderBootloader 以其本身的含义来讲就是下载和启动系统,它类似于 PC 中的 BIOS,大部分芯片厂商所提供的嵌入式系统都提供有这样的程序,而且都比较成熟,大可不必自行编写。为研究其工作原理,清扫上个章节裸机程序中的知识盲点,本章节将通过vivi单独介绍Bootloader的技术细节。vivi由三星提供,韩国 mizi 公司原创,开放源代码,必须使用 arm-linux-gcc 进行编译,主要适用于三星 S3C24xx 系列 ARM 芯片,用以启动 Linux 系统,支持
2021-09-24 18:40:32
2067
原创 win7连win10失败解决方法
先参考以下文章的方法对Win10系统进行设置win7连接win10远程桌面_不许说真话_新浪博客win7连接win10远程桌面_不许说真话_新浪博客,不许说真话,http://blog.sina.com.cn/s/blog_537517170102w2oz.html若还是连接不上,可进行如下设置:设置-系统-远程桌面-高级设置不勾选“需要计算机使用网络级别身份验证进行连接"...
2021-09-14 15:53:35
1710
原创 S3C2440驱动开发(六)
裸机程序开发之蜂鸣器程序先上代码,代码有点长,共409行。涉及到的寄存器比较多。本节只做代码解释,详细原理不再这里展开。#include "def.h"#include "option.h"#include "2440addr.h"#include "2440lib.h"#include "2440slib.h"#include "mmu.h"//================================#define LCD_WIDTH 240#def...
2021-05-08 15:16:07
314
原创 S3C2440驱动开发(五)
裸机程序开发之按键程序在开发板中实现按键检测有2种方式,一种是轮询,另一种是中断,本章节将介绍中断方式。CPU中的中断控制器可接收60种中断源,提供中断源的外设有:DMA控制器,UART,IIC,EINTn。本章节使用的中断是EINTn。以下是源码:1 #include "def.h"2 #include "option.h"3 #include "2440addr.h"4 #include "2440lib.h"5...
2021-05-06 17:19:19
228
原创 S3C2440驱动开发(三)
裸机程序开发之串口程序S3C2440A通用异步收发器(UART)提供三个独立的异步串行I / O(SIO)端口,每个端口都可以在基于中断或基于DMA的模式下运行。换句话说,UART可以产生中断或DMA请求用于在CPU和UART之间传输数据。 UART可以使用系统时钟,波特率最高可达115.2K bps。如果外部设备为UART提供了UEXTCLK,则UART可以以更高的速度运行。每个UART通道包含两个用于接收器和发送器的64字节FIFO。S3C2440A UART包括可编程的波特率,红外(IR)发送
2021-04-14 18:13:51
258
原创 S3C2440驱动开发(二)
裸机程序开发之LED程序以下代码段实现了一个简单的LED显示程序,程序比较简单,共53行。1 #include "def.h"2 #include "option.h"3 #include "2440addr.h"4 #include "2440lib.h"5 #include "2440slib.h"67 void dely(U32 tt)8 {9 ...
2021-04-13 18:10:07
383
原创 S3C2440驱动开发(一)
1.驱动开发概述本文主要针对友善之臂mini2440开发板而编写的学习资料。虽然市面上介绍Linux系统驱动原理和内核源码的书很多,但是直接上手比较困难,特买了一个Arm9开发板,希望从裸机程序开始学习,逐步掌握Linux系统驱动开发方法。编写本文的目的为记录学习过程,用于后期回顾。文章主要分为两部分。第一部分,从友善之臂提供的裸机程序开始介绍各各外设驱动开发过程。第二部分,linux驱动开发流程及实践。1.1 S3C2440A介绍三星S3C2440是为手持式设备而开发的16/32位精简指令集微
2021-04-13 09:44:04
964
原创 Windbg及Dump文件分析方法
1.WinDbg1.1WinDbg介绍WinDbg全称Debugging Tools for Windows,是windows平台下的调试工具。获取Windbg的三种途径:(1)在Visual Studio安装时安装Windows Driver Kit(WDK)。WDK中包含WinDbg。(2)安装Windows Software Development Kit (SDK)。SDK中包含WinDbg。下载地址(3)如果只下载单独的WinDbg,先下载SDK,在安装过程中选择“Debu
2021-03-08 11:31:17
8743
原创 CPngImage在Release版本退出时崩溃【已解决】
问题描述创建了一个基于MFC对话框的项目,对话框中添加了MFCButton控件,添加了一些PNG图片到资源中,用于显示图形按钮。当程序关闭时,发生了崩溃现象。使用WinDbg定位崩溃位置运行环境IDE:VS2015编译详情:Release,Win32,在静态库中使用MFC,使用Unicode字符集,使用链接时间代码生成(全程序优化)解决方法通过WinDbg发现出现问题的地方在MFC模块中。通过搜索引擎查找出了类似案例:https://bbs.csdn.net/topics
2021-03-06 15:56:09
167
翻译 IEEE Standard 754浮点数介绍
本文翻译自,并做补充:https://steve.hollasch.net/cgindex/coding/ieeefloat.htmlIEEE Standard 754是当下在计算机中描述实数最通用的一种方式,计算机包括英特尔系列的电脑,苹果公司的麦金塔电脑以及绝大多数Unix平台的电脑。本文给出了IEEE浮点数的描述,关于算法部分的实现可以参考文章末尾提供的参考资料。什么是浮点数?在计算机上描述实数的方法有很多。固定点在数字中间的某处放置一个小数点,相当于使用整数来表示单位的一..
2021-01-06 09:51:30
1647
1
原创 VS2015 资源视图显示问题
使用VS2015编写C++程序时,遇到一个奇怪的现象。相同的代码在不同的路径下打开vs,在视图资源视图中打开对话框资源显示的内容不一致。直接原因为代码中的APS文件未更新,使用的是老版本。APS是资源编译后的二进制文件。正常情况下VS会自动更新该文件,但是在某些未知情况下不更新。临时解决方法,将工程文件夹底下的.aps文件删除。规避方法,在SVN等版本管理软件中不要上传.aps文件。...
2020-11-26 11:02:34
1157
原创 Ubuntu 10.04 LTS安装及使用SVN说明
一、使用SVN源码安装以下使用svn-1.8.1进行编译安装,其他版本安装类似。subversion可以从http://archive.apache.org/dist/subversion/ 中下载subversion-1.8.1.tar.bz2解压。所有依赖库需要安装在同一个目录下,否则会出现svn安装出错问题:An appropriate version of serf could not be found, so libsvn_ra_serf will not be built. ..
2020-11-25 11:37:49
378
原创 QT5.12静态编译手册
QT5.12静态编译手册一、概要在Windows平台下开发的QT应用程序,使用官方下载的QTCreator编译程序(动态编译),部署到客户机器上需要加上QT的DLL库文件,文件多且占用空间大,同时需要安装C++的运行库(有的Windows版本会安装出错,比如未打补丁的windows7)。使用静态编译,部署时不需要额外的QT和C++运行库的DLL,且占用磁盘空间较少。本文档描述QT5.12在Windows平台下使用VS2015静态编译,以及设置QT Creator 4.4.1(Community)的方
2020-11-24 18:11:04
3070
7
原创 四则运算解析及计算
四则运算是中缀表达式,需要将其转化为后缀表达式。原因是计算中缀表达式很困难。明确运算符的优先级: 优先级(数字越大,优先级越高) 运算符 2 + - 1 * / 0 ( ) 格式化四则表达式输入的表达式可能出现无用的字符,需要去除否则影响下面的判断逻辑。处..
2020-07-10 18:04:37
1194
原创 Win32下 DLL调用DLL崩溃问题(已解决)
最近在一个项目中,使用两个DLL模块。DLLOne用于数据通信,DLLTwo用于业务流程处理,DLLTwo调用了DLLOne中的接口,还有一个exe主程序调用了DLLTwo。在使用VS2015调试时,发现程序发生了异常中断。但是直接双击生成的exe文件程序不会崩溃。查看调用的堆栈,发现中断的地方位于c++运行库的dllmain_crt_process_attach模块中。通过排除法,定位到问题点,分别是一个DLL中的socket(AF_INET, SOCK_STREAM, 0)和另外一个模块中.
2020-07-07 16:10:44
3047
subversion-1.10.6-for-ubuntu10.04LTS.tar.gz
2020-11-25
subversion-1.8.1-for-ubuntu10.04LTS.tar.gz
2020-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人