嵌入式开发学习
文章平均质量分 92
bahutou
直接删除电脑桌面图标用以卸载软件,从那时起,我开始了我的计算机学习生涯。 学生时代,在学校信息管理中心接触计算机网络,WEB服务器端的计算机程序开发,接着学习计算机组成原理,C语言,单片机,模电、数电,嵌入式操作系统,数据库,项目管理。 经过大学的学习,了解了计算机的世界。同时,对抽象,层次,接口等概念有了深刻理解。 工作了,发现自己计算机硬件基础薄弱,正努力学习电子技术。努力成长为一名全面的嵌入式人才。个人比较喜欢和别人沟通,喜欢思考别人认为没有用的东西。但我始终觉着思考、不断学习、成长是幸福的事情。 喜欢以通俗的方式讲解知识。喜欢哲学,关注教育。 梦想着有一天能够成为一名讲师。
展开
-
Jffs2文件系统的制作及使用
Jffs2文件系统的制作及使用,主要介绍了分区的概念,制作、使用jffs2文件系统的方法。.为什么使用Jffs2.分区是啥?.u-boot下的分区和Linux下的分区的联系和区别.怎么制作Jffs2文件系统?.使用Jffs2原创 2017-08-22 13:50:41 · 6359 阅读 · 0 评论 -
C语言编程规约(个人规约)
个人理解:程序第一是要供人阅读的,方便业内人员交流、沟通。也方便自己或者他人维护、升级。所以编写程序需要一定的规约,来保持编写代码的简洁性和一致性。关于c语言基本数据类型:为方便跨硬件平台移植,我定义一下数据类型。typedef unsigned char BOOLEAN;typedef unsigned char INT8U;原创 2014-02-21 14:32:26 · 2049 阅读 · 0 评论 -
GPIO操作之C语言篇
1:主要内容2:相关要点3:实验源码原创 2014-06-29 09:26:04 · 4913 阅读 · 0 评论 -
ARM处理器学习之--GPIO操作篇
所有的试验 环境都给出两套。一套windows版本的,一套linux版本的。 先写出linux版本的环境搭建工作。 以下为主要问题:1, 怎么在Windows 操作系统上使用linux的环境?(使用虚拟机 VM8)2, 在虚拟机上的linux系统和windows主机、ARM开发板网络通讯问题。(共享文件的方法)。3, 什么是交叉编译原创 2014-06-08 18:22:55 · 8298 阅读 · 0 评论 -
ARM芯片学习内容规划及ARM开发环境的搭建
主要工作:1:系统控制模块 (Crystal oscillator 、PLL、Reset and wake-up timer)2:arm芯片工作模式(PROGRAMMER'S MODEL)3:通用IO操作4:UART、i2c、spi5:定时器、看门狗、实时时钟6:PWM 、AD、DA7:外部存储控制器8:中断系统9:uco原创 2014-06-06 14:17:07 · 1786 阅读 · 0 评论 -
Diff/Patch 工具的使用
补丁Patch是天才程序员、Perl的发明者Larry Wall发明的,它应高效地交流程序源代码之需求而生,随着以Linux为代表的开发源代码运行的蓬勃发展,patch这个概念已经成为开放源代码发起者、贡献者和参与者的集体无意识的一部分。patch只包含了对源代码修改的部分,这对于开放源代码社区的协同开发模式具有重要意义,意味的软件新版本的发布和对软件的缺陷或改进可以以更小的文件发布,可以减少网络原创 2014-06-09 09:57:57 · 5740 阅读 · 0 评论 -
linux 模块编译步骤
本文将直接了当的带你进入linux的模块编译。当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂。之所以要写这篇文章,主要是因为从书本上学的话,可能要花更长的时间才能学会整个过程,因为看书的话是一个学习过程,而我这篇文章更像是一个培训。所以实践性和总结性更强。通过本文你将会学到编译一个模块和模块makefile的基本知识。以及加载(卸载)模块,查看系统消息的一些知识;声明:原创 2014-06-09 09:56:42 · 650 阅读 · 0 评论 -
C语言中return与_exit的区别
C语言中return与_exit的区别C语言中return与exit的区别C语言中的return, exit, break, continue。前两个函数使用的同时通常都会带上程序退出时的状态码,标准C中有EXIT_SUCCESS和EXIT_FAILURE两个宏,位于/usr/include/stdlib.h中。是这样定义的的:#define EXIT_FAILUR转载 2014-06-09 09:58:40 · 1048 阅读 · 0 评论 -
hex、bin、elf、axf文件区别
hex,bin,axf,elf的区别 一、HEX 和BINHex文件,这里指的是Intel标准的十六进制文件,也就是机器代码的十六进制形式,并且是用一定文件格式的ASCII码来表示.具体格式介绍如下: Intel hex 文件格式 Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式转载 2014-06-09 09:59:20 · 3471 阅读 · 0 评论 -
宏定义 do while(0)分析
在宏定义里面经常看到do{...}while(0)这样的语句。确实很让人疑惑,do while(0)就是让代码只执行一次,何必这样呢,为什么需要用do while呢。其实,宏定义就是一个代码替换的过程。#define CODE_SEG(a) printf("sample macro:%s\n",a) 那么在出现了CODE_SEG(some_str)的地方,它都会在编原创 2014-06-09 09:57:19 · 888 阅读 · 0 评论 -
基于gnu-arm-linux的LPC2220的简单工程模板
1:源头:2:例程实现的功能:原创 2014-08-04 21:52:38 · 2121 阅读 · 0 评论 -
C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型
Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 无论学习哪一种语言,都免不了要讨论这些问题。而且这些问题,深究起来有时也让我们很迷惑。 标识符的定义无需多讲,只需注意不仅仅是指变量,还有函数,标签等。转载 2014-11-28 10:42:30 · 3913 阅读 · 0 评论 -
Modbus协议
1:Modbus协议简介 Modbus协议主要描述的是应用层的信息封装格式,处于OSI模式的第七层(应用层)。Modbus的物理层可以是RS-485、Ethernet II /802.3。Modbus协议栈的层次图: 本文主要介绍Modbus使用物理层是EIA/TIA-485的情况。Modbus主要内容为应用层协议,所以在现实使用中可原创 2015-02-14 21:19:18 · 9524 阅读 · 5 评论 -
U-boot简介及常用命令说明
使用u-boot开发一些项目有一段时间了,对u-boot也更加熟悉了。以前经常想u-boot存在的意义到底是啥呢?百科上说U-Boot的作用是系统引导。恩?引导系统?具体什么含义?u-boot在实际开发中还有什么具体作用?好吧,如果你对这些问题感兴趣,是吧。………………原创 2017-05-24 17:50:25 · 13457 阅读 · 1 评论 -
使用eclipse 做嵌入式开发
eclipse 作为一个开源的IDE,可以使用ecliose配置一个属于自己的开发环境。 下面的文章对使用eclipse做嵌入式软件的开发、调试做了详细的说明。资料下载地址:http://download.csdn.net/detail/zhanglianpin/9441068包含Linux 上运行的eclipse的全部资料下载地址: eclipse 开发嵌入式C语言原创 2016-02-23 22:01:39 · 2515 阅读 · 0 评论 -
vim配置总结
本博文转自:http://www.cppblog.com/runsisi/archive/2013/04/06/199152.html?opt=admin12年的最后一天配置了一下公司RHEL上的vim,公司的网络不允许上传东西和外发邮件,因此总结得回家写,没有RHEL的环境,不过用CentOS或openSUSE也是一样的。毕业快一年了,虽然一直是在Linux下开发,但很多时候还是转载 2016-03-08 15:29:56 · 861 阅读 · 0 评论 -
C语言inline函数
转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~ 本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的转载 2015-07-22 15:47:05 · 922 阅读 · 0 评论 -
重新认识C语言
1.缘起 接触C语言有三四年时间了,工作中也一直使用C语言。但对于一些C语言的特性和定义还存在一些疑问,这里总结一下,作为以后参考。2.C语言的链接属性 工作中无意发现了C语言一个有趣的问题,在两个源文件中定义了同一个未初始化的变量,编译器竟然不报错,但是如果在其中一个文件中定义并初始化,那就会报错。我测试使用的代码如下(测试环境window7(32位)gcc 4原创 2015-07-06 10:30:02 · 1066 阅读 · 0 评论 -
嵌入式C语言编程规范(个人规约)
0规范制定说明0.1箴言技术人员设计程序的首要目的是用于技术人员沟通和交流,其次才是用于控制CPU的。程序的生命力在于用户使用,程序的成长在于后期的维护及根据用户需求更新和升级功能。如果你的程序只能由你来维护,当你离开这个程序时,你的程序也和你一起离开了,这将给公司和后来接手的技术人员带来巨大的痛苦和损失。因此,为了程序可读、易理解、好维护,你的程序需要遵守一定的规范,你的程序需要设计。原创 2015-06-18 09:51:38 · 10402 阅读 · 2 评论 -
ARM硬件平台上基于UCOS移植Lwip网络协议栈
目录1硬件平台 11.1硬件平台简介 11.2 硬件设计及电路原理图 22. Keil 开发工具及Keil工程简介 62.1 Keil开发工具 62.2 Keil工程简介 62.3 链接文件、启动文件分析 63. UCOS移植 113.1 ucos简介 113.2 ucos移植总述 113.3 和移植UCOS有关的ARM芯片知识 113.4 系统堆栈原创 2015-06-14 10:33:29 · 4728 阅读 · 2 评论 -
C语言 浮点数
一:起因在有些嵌入式项目中,我们需要保存一些浮点数的系数,针对这些系数的处理,我们就要用到C语言中浮点数相关的知识,自己对这方面也是知其然不知所以然,借此机会总结记录一下。二:疑问1,浮点数在计算机中是如何保存的? 2,这些数据精确度到底都是多少? 3,浮点数中的无穷大、无穷小是怎么表示 4,为什么有时候针对浮点数运算,得到的结果不是转载 2015-05-12 10:49:47 · 872 阅读 · 0 评论 -
Keil C51 的printf
在Keil C51 中使用printf ,首先需要重新实现 putchar(char c)函数。此函数在char putchar (char c) { ES=0; SBUF = c; while(TI==0); TI=0; ES=1; return 0原创 2015-03-31 14:15:59 · 16787 阅读 · 0 评论 -
c语言 中 # ##的使用方法
今天在分析一份源码的时候遇到了如下代码:[cpp] view plaincopyprint?#define CASE(x,y) case x: _bsd_setlasterror(anApplInstance, BSD_ ## y); break 觉得其中的##很有意思,于是就将这个知识点整理一下。#和##都是预处理指令,原创 2014-05-23 17:16:13 · 724 阅读 · 0 评论 -
作为一个新人,怎样学习嵌入式Linux?(韦东山)
被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语言的,经常去转载 2014-06-03 08:12:05 · 1297 阅读 · 0 评论 -
linux下项目开发中防止重复定义和重复包含的方法
我们在网上下载的c或 c++ 源码,当你打开其中的头文件时,如果你是一个心细的计算机爱好者你会发现他们写的头文件都包含在一个条件编译中。比如:#ifndef CLOCK_H#define CLOCK_H源码部分…………………. #endif //CLOCK_H好了,现在说一说它们的作用。这个条件编译的作用不体现在这个文件中,而是体现在整个project中。我们原创 2011-06-12 23:45:00 · 4646 阅读 · 0 评论 -
arm 汇编 LDMFD 语句有关
<br />一开始,看到 STMFD sp!{R0-R5,LR} 这条命令时真是有点疑惑。现根据自己的理解记录一下。供大家分享!<br />我们先要理解一下关于堆栈的相关概念.<br />1,满堆栈:即入栈后堆栈指针sp指向最后一个入栈的元素。也就是sp先减一(加一)再入栈。<br />2,空堆栈:即入栈后堆栈指针指向最后一个入栈元素的下一个元素。也就是先入栈sp再减一(或加一)。<br />1,递增堆栈:即堆栈一开始的地址是低地址,向高地址开始递增。就如同一个水杯(假设上面地址大)开口的是大地址,从杯底开原创 2011-04-17 21:55:00 · 5233 阅读 · 0 评论 -
arm-linux-gcc安装 和 环境变量设置
<br />1。 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹 里 /home/wrq<br /> arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2<br />2。 解压 arm-linux-gcc-3.4.1.tar.bz2<br /> #tar -jxvf原创 2011-04-13 11:34:00 · 24881 阅读 · 0 评论 -
关于 arm的中断系统
原来一直不明白这样一件事,想arm系统的外部中断源只有irq一种,那么它怎么识别很多个中断源那。原来是自己的计算机组成原理没学好。在中断系统里有一个器件叫中断控制器。它控制着整个中断源和优先级的判别。下面是别人写的有关这方面的知识:ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。 先不说中断控制器,只说ARM核心。原创 2011-04-11 19:30:00 · 1165 阅读 · 0 评论 -
Arm寄存器
Arm寄存器Arm体系 2009-03-18 10:03:09 阅读97 评论3 字号:大中小 订阅ARM处理器共有37个寄存器。其中包括:**31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。**6个状态寄存器。这些寄存器都是32位寄存器。ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各转载 2011-04-11 23:34:00 · 1092 阅读 · 0 评论 -
函数调用 堆栈
<br />最近在学习嵌入式系统移植时,一直有一个相关概念就是堆栈。很多资料都说堆栈是c语言里函数调用的基础。具体,堆栈在c语言里和在系统里有哪些具体的作用。我在网上和书上查了一下资料,现在总结一下,以供大家参考。<br />我们一般说堆栈的时候都强调堆栈是函数调用时把被调用的函数所需参数压入栈中,以实现函数的调用。<br />但是,函数调用具体是怎么实现的,我们一般不讲。现在总结一下堆栈的具体作用:<br />1,传递参数(为被调用函数提供参数)<br />2,保存局部变量<br />3,保存中间变量<b原创 2011-04-08 23:56:00 · 9112 阅读 · 0 评论 -
关于 c语言的编译 和编译后程序的运行
原来,一直不太明白这样一个问题:既然c语言是一种相对高级的语言,应该用c语言写出的东西,经过编译器编译就可在任意机器上运行。我今天试了一下在linux下编译的c语言在windows下运行,但是都提示错误。然后去网上查了一些资料,事实上如果你编写的程序全是汇编或者纯c语言,没有用到任何第三方软件或者和操作系统有关的库函数,那么你编译完后,可以在同等硬件上执行。当然,你编译的时候必须编译成硬件认识的指令。【即必须使用相应的编译器】。但,事实上我们平常用c语言写的一些应用程序会或多或少使用一些某些系统特有的函数库原创 2011-03-29 19:57:00 · 2546 阅读 · 0 评论 -
red hat 9.0 上安装qt4
1.什么是QTQt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt API在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致,因而Qt应用的开发和部署与平台无关。2.什么是Qt/EmbeddedQt/Embedded 是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。这个开发工具的名字好像最容易混淆,当然Qt/Embedded是最熟悉的名字,好像 Qtopia Core说的也是它。最近,奇趣公司又该名字了,它的新名字叫做qt-embedde原创 2011-05-14 23:27:00 · 1326 阅读 · 0 评论 -
linux环境搭建和arm开发板环境搭建 续
下面我们接着上一次的文章来继续说明一下,在linux主机搭建好之后怎样和目标机通讯。首先说明一下用linux主机的开发的优势,linux支持很好的网络服务,可以用于主机和目标机之间的通讯。而且linux的编译器gcc【red hat默认安装gcc的】也能编译c c++ 汇编程序。而且linux下的开发工具很丰富,有利于我们学习和开发。而且linux源码开源,更有利于我们二次开发!首先说明宿主机linux的相关配置选项:首先应该为linux配置ip地址,用于通讯。然后配置nfs服务,最后配置防火墙。为linu原创 2011-03-22 22:58:00 · 5074 阅读 · 3 评论 -
qt 在linux环境下的搭建 (自己整理)
想起自己当初刚开始学习Qt的那个苦恼,一开始不知道各个软件之间的关系和安装时具体为什么这么做,现在就把它总结一下,希望对大家有所帮助。1. 硬件环境A. 主机:x86系列PC机。B. 开发板:博创2410-s。C. 通讯连接:串口和网络。2. 软件环境A. 主机操作系统:VMware虚拟机下的Redhat linux 9.0(完全安装) 。B. 开发板操作系统:嵌入式Linux,内核版本为2.6.13。C. 交叉编译器:armv41-unknown-linux-c++。D. 通讯方式:虚拟机与主机(Wind原创 2011-04-29 20:54:00 · 12088 阅读 · 0 评论 -
linux下的多线程调试(gdb)
GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者转载 2011-07-21 22:37:23 · 7008 阅读 · 0 评论 -
configure 时的host build target问题
今天在移植samba,在用configure 配置时,遇到了host build target等选项,这个问题在linux下编译project时会经常用到。下面总结一下: 在交叉编译中比较常见的一些参数就是build、host和target了,正确的理解这三者的含义对于交叉编译是原创 2011-07-20 22:46:03 · 9927 阅读 · 1 评论 -
IO中同步、异步与阻塞、非阻塞的区别
一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数转载 2014-04-11 13:47:25 · 764 阅读 · 0 评论 -
制作S3C6410 的交叉编译链(arm-linux-gcc 4.6.0)
最近在做一些嵌入式的软件开发工作,在Linux下的交叉编译链一直都是使用别人编译好的交叉编译器。想自己制作一个属于自己的交叉编译器,了解一下构建嵌入式系统开发工具的一些方法。下面说一下大致的方法和步骤。从gnu网站上下载所需要的源码包,然后进行配置,编译,链接,安装。还有就是使用第三方用于编译生成交叉编译链的管理工具:crosstool-ng-1.19.0(目前为最新版本)官方网站:h原创 2014-03-25 20:26:30 · 14803 阅读 · 1 评论 -
ARM汇编 C语言 C++ 相互调用
C语言和ARM汇编语言的相互调用1.汇编程序访问C语言全局变量全局变量只能通过地址间接调用,为了访问C语言中全局变量,首先要通过extern伪指令引入全局变量,然后将其地址装入寄存器中。对于unsigned char类型,使用LDRB/STRB访问;对于unsigned short类型,使用LDRH/STRH访问;对于unsigned int类型,使转载 2014-04-18 21:17:56 · 5013 阅读 · 0 评论 -
作为一个新人,怎样学习嵌入式Linux?(韦东山)
被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语言的,经常去转载 2014-04-16 08:19:03 · 1014 阅读 · 0 评论