嵌入式开发
文章平均质量分 65
Aguangg_6655_la
充电。。。
展开
-
ARM程序异常返回操作
异常的发生会导致程序正常运行的被打断, 并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回 到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案, 用于记录源程序的断点位置,以便正确的异常返回。 类似的还有子程序的调用和 返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置,以原创 2017-06-22 11:15:49 · 1646 阅读 · 0 评论 -
ubunt开启nfs服务+jz2440挂载nfs文件系统
#sudo apt-get install nfs-kernel-server-------------------------------------------打开/etc/exports文件,在末尾加入:/home/xgc *(rw,sync,no_root_squash)注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:转载 2017-03-09 22:08:27 · 1063 阅读 · 0 评论 -
In file included from scripts/kconfig/lxdialog/checklist.c:24:0: scripts/kconfig/lxdialog/dialog.h:3
问题:在Linux环境make menuconfig的时候出现一下错误。In file included from scripts/kconfig/lxdialog/checklist.c:24:0:scripts/kconfig/lxdialog/dialog.h:32:20: fatal error: curses.h: No such file or directorycompilati原创 2017-03-08 17:24:26 · 2993 阅读 · 0 评论 -
linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax
今天在按照韦东山大哥的教程流程编译内核的时候出现了这个问题 linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntaxlinux-2.6.22.6/Makefile:1449: *** mixed implicit and normal rules: d转载 2017-03-08 17:01:46 · 1617 阅读 · 0 评论 -
MDK环境下stm32实现printf函数
printf虽然是C语言的标准函数,但是是针对有stdin, stdout设备的系统的,在嵌入式平台上是没有标准的stdin, stdout的,需要映射到串口后某个输出对象的,而嵌入式平台各不相同,如果又没有操作系统的支持,就只能靠自己实现了,因此STM32下的printf不在标准库里,而在定制的库里。而且一般在嵌入式平台一般也不用printf,可以自己使用sprintf()函数先将数据格式化到缓原创 2017-02-22 19:21:42 · 1525 阅读 · 0 评论 -
stm32移植millis()记录系统开机运行时间
首先初始化RTC和millis MILLIS_Init(); //初始化RTC为1Hz,同时初始化millisMILLIS_Init() 函数的实现void MILLIS_Init(void){#ifdef USE_LSE NVIC_InitTypeDef NVIC_InitStructure; /* Enable PWR and BKP clocks */原创 2017-02-22 17:32:33 · 5123 阅读 · 1 评论 -
STM32串口中断卡死主循环问题分析
在一项目中,使用STM32作为主控,程序运行一段时间后概率出现主循环卡死现象。问题分析如下:1、程序USART2不停接收并处理串口数据,波特率115200;2、主循环卡死;3、USART1中断及TIM2中断响应函数运行正常;(USART1及TIM2中断优先级均比USART2高)4、出现现象后,拔掉USART2的接收数据线,现象不能回复正常;转载 2017-02-21 21:24:21 · 4242 阅读 · 1 评论 -
S3C2440--MMU
1.MMU的作用我们再第一部分讨论的全部都是物理地址,注意不要与这部分要将的虚拟地址给混淆起来。内存管理单元(Memory ManagerUnit)简称MMU。它负责将虚拟地址转换成物理地址,然后传给上部分介绍的存储管理器进行寻址。现代的多用户多进程操作系统通过MMU使各个用户进程都有自己的独立的地址空间:地址映射功能功能使的个进程拥有“看起来”一样的地址空间,而内存访问权转载 2017-03-01 22:34:04 · 463 阅读 · 0 评论 -
struct class
设备类struct class是一个设备的高级视图,它抽象出低级的实现细节。例如,驱动可以见到一个SCSI磁盘或者一个ATA磁盘,在类的级别,他们都是磁盘,类允许用户空间基于它们作什么来使用设备,而不是它们如何被连接或者它们如何工作。struct class{ const char *name; //类名称 struct module *owner; //对应模块转载 2017-03-10 11:59:17 · 321 阅读 · 0 评论 -
struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head转载 2017-03-10 12:04:23 · 276 阅读 · 0 评论 -
insmod 和 rmmod
Linux内核是个很庞大的东西,要全部了解清楚是很难的,所以我们所做的内核上的开发也是为驱动做一些基本的准备。其中Linux的系统的构成、内核的构成还有内核的目录结构在这里就不去做过多的解释,有兴趣的可以自己查找相关的资料。 一、内核模块的特点 a) 不会被编译进内核之中,这样的话可以尽可能的控制Linux内核的大小。 b)转载 2017-03-10 14:49:37 · 1891 阅读 · 0 评论 -
ARM体系结构CPSR-当前程序状态寄存器
CPSR有4个8位区域:标志域(F)、状态域(S)、扩展域(X)、控制域(C)MSR - Load specified fields of the CPSR or SPSR with an immediate constant, or from the contents of a general-purpose register.Syntax:MSR{cond} _原创 2017-06-21 11:11:37 · 1228 阅读 · 0 评论 -
BigEnd和LittleEnd的故事
在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。 目前在各种体系的计算机中,通常采用big-endian和little-endian两种字节存储机制描述在多字节数中各个字节的存储顺序。转载 2017-03-14 09:12:17 · 2705 阅读 · 0 评论 -
Linux终端处理和Poll机制
中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务 的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。单片机中断处理:①分辨中断类型②调用处理函数③清中断Linux系统 : asm_do_IR转载 2017-03-13 22:04:00 · 472 阅读 · 0 评论 -
Linux程序进程前台后台切换操作
1、在命令末尾加上 & 符号,就可以让程序在后台运行。例如:command & 2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行。3、查看所有后台运行的程序: jobs –l 4、把后台运行的程序调到前台: fg %[number]5、直接终止后台运行的程序: kill转载 2017-03-13 11:31:22 · 3482 阅读 · 0 评论 -
字符型设备驱动程序开发流程(驱动程序框架+类似裸板编程)
一、驱动程序框架:1、open()static int first_drv_open(struct inode *inode, struct file *file){ return 0;}2、write()static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count原创 2017-03-11 22:25:22 · 735 阅读 · 0 评论 -
设备、设备文件和设备驱动
1.设备Linux下的设备通常分为三类,字符设备,块设备和网络设备。见的字符设备有鼠标、键盘、串口、控制台等。常见的块设备有各种硬盘、flash磁盘、RAM磁盘等。在Linux里一个网络设备也可以叫做一个网络接口,如eth0,应用程序是通过Socket而不是设备节点来访问网络设备,在系统里根本就不存在网络设备节点。网络接口没有像字符设备和块设备一样的设备号,只有转载 2017-03-11 21:57:54 · 607 阅读 · 0 评论 -
大端与小端存储模式详解
端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象)。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big E转载 2017-03-07 21:55:57 · 335 阅读 · 0 评论 -
Linux下的lds链接脚本详解
一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).-转载 2017-03-07 15:58:24 · 817 阅读 · 0 评论 -
mknod命令
mknod命令用于创建Linux中的字符设备文件和块设备文件。 语法 mknod(选项)(参数) 选项 -Z:设置安全的上下文; -m:设置权限模式; -help:显示帮助信息; --version:显示版本信息。 参数 文件名:要创建的设备文件名; 类型:指定要创建的设备文件的类型; 主设备号:指定设备文件的主设备号; 次设备号:指定设备文件的次设转载 2017-03-10 15:23:29 · 697 阅读 · 0 评论 -
S3C2440--存储管理器
1. 如何从外部设备read数据?假如要从网卡或者SDRAM等设备读取数据 地址为0x30000000 代码可以如下:mov R1, #0x30000000ldr R0, [R1] //也就是读取4byte数据12122. 存储管理器的作用CPU不需要关心外设是什么,硬件相关所有工作由存储管理器完成: 1. 片选信号 2. bank选择 3. 列转载 2017-03-01 22:22:30 · 439 阅读 · 0 评论 -
Makefile:1607 *** mixed implicit and nomal rules:depracated syntax
Makefile:1607行: *** 混和的隐含和普通规则。 停止,,此行显示:1607 / %/: prepare scripts FORCE1608 $(cmd_crmodverdir)1609 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \1610 $(build)=$(build-dir)1607中的/原创 2017-02-20 20:43:01 · 490 阅读 · 0 评论 -
register_chrdev()与unregister_chrdev()
Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。在应用程序看来,硬件设备只 是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open ()、close ()、read ()、write () 等。Linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进行;而块设备则转载 2017-02-20 15:09:22 · 612 阅读 · 0 评论 -
make: *** /lib/modules/3.10.0-327.2.el7.x86_64/build: No such file or directory. Stop
problem:make: *** /lib/modules/3.10.0-327.2.el7.x86_64/build: No such file or directory. StopReason:The kernel head files are missing for the current kernel.How I solved it:find curr原创 2016-11-17 21:27:43 · 18702 阅读 · 2 评论 -
Linux下安装使用DNW for linux下载文件镜像
Linux下与TQ2440进行串口通信见 http://www.linuxidc.com/Linux/2011-12/48961.htm本人使用的Ubuntu 10.04开发板是TQ2440在网上找到一个dnw for Linux。共享给大家(secbulk目录下是PC端USB驱动, dnw目录是下载工具)效果图:1.首先解压缩文件:# tar xvf dnw_转载 2016-11-21 21:56:47 · 1011 阅读 · 0 评论 -
nandflash启动理解
有很多同学在移植u-boot时,都会对s3c2440从Nandflash启动的过程非常迷惑。这里发这个帖子给大家介绍一下它的启动流程。 大部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大转载 2016-11-25 11:19:27 · 751 阅读 · 0 评论 -
对NAND FLASH 读写操作代码地址问题的注释解读
/* 本实验接口说明*/#include "include.h"/*-----------------------函数声明----------------------------*/void InitNandFlash(int info);void cpy_bpage(void);void add_bpage(unsigned int seq);extern void Uart原创 2016-11-25 17:05:33 · 1192 阅读 · 0 评论 -
对于S3C2440的看门狗定时器的个人理解
先看一段测试代码:/*-------------------------------------------------------------函数名称: watchdog_test功能描述: 看门狗试验函数传 参: 无返 回 值: 无-------------------------------------------------------------*/void wat原创 2016-11-25 21:03:31 · 754 阅读 · 0 评论 -
做嵌入式linux驱动的前途何在
做嵌入式linux驱动的前途何在?或者说,怎么才能做好这一行?我做嵌入式驱动开发已经一年多了,感觉没学到多少东西。从网络驱动到CAN驱动、从dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系统、从LCD/VGA驱动到音频驱动、从IAR到ADS再到GCC、Ucos到linux、从I2C总线到SPI再到SSC以及TCP/IP协议,感觉一个字:转载 2016-11-28 16:14:39 · 5046 阅读 · 2 评论 -
用JLINK烧写U-boot到Nand Flash中
很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bootloader给转载 2016-11-29 15:33:45 · 761 阅读 · 0 评论 -
请不要做一个浮躁的嵌入式工程师
1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。 3. 看帮助。不要因为很难,而自己又是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,或不够直观转载 2016-11-29 15:37:53 · 493 阅读 · 0 评论 -
Jflash源码分析
来源: 作者:freasy转自 http://www.dzjs.net/html/qianrushixitong/2007/0403/1858.html 后记:第一次接触JTAG是大学学习数字逻辑的时候,那个时候在maxplus里面画好原理图或者用HDL写好描述,编译之后,就使用JTAG下载到alter 的芯片里面,那个芯片就按照我们的原理动起来了!!真是神奇,当时觉得转载 2016-11-29 15:41:27 · 1720 阅读 · 0 评论 -
error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or dir
问题:error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory解决办法:[root@aguangg tmp]# yum whatprovides libz.so.1Loaded plugins: fastestmirror,原创 2016-11-17 09:46:24 · 1361 阅读 · 0 评论 -
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file
我是在centos发行版环境下遇到这个问题,其他发行版可参考。你使用交叉编译工具,本地缺少libstdc++.so.6的库文件,这个so库是arm架构的,不是指本地的x86的。你需要确认你的编译环境中包含相关arm的libstdc++.so.6库,yum -y install libstdc* 安装相关的libstdc*库文件即可。(*为通配符)原创 2016-11-16 22:15:09 · 3266 阅读 · 0 评论 -
ARM与Linux_PC之间tftp通信环境的搭建
ARM与Linux_PC之间tftp通信环境的搭建,ARM开发板与linux主机之间通过双绞线ping通,tftp命令用法如下(linux PC机上),Busybox中tftp命令的用法(ARM开发板)原创 2016-11-19 15:50:10 · 2744 阅读 · 0 评论 -
嵌入式学习的几种线路图
嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:1、嵌入式linux上层应用,包括QT的GUI开发2、嵌入式linux系统开发3、嵌入式linux驱动开发嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源转载 2016-12-16 14:10:08 · 1959 阅读 · 0 评论 -
闲谈嵌入式编程的复杂性
能从PC机器编程去看嵌入式问题,那是第一步;学会用嵌入式编程思想,那是第二步;用PC的思想和嵌入式的思想结合在一起,应用于实际的项目,那是第三步。很多朋友都是从PC编程转向嵌入式编程的。在中国,嵌入式编程的朋友很少是正儿八经从计算机专业毕业的,都是从自动控制啊,电子相关的专业毕业的。这些童鞋们,实践经验雄厚,但是理论知识缺乏;计算机专业毕业的童鞋很大一部分去弄网游、网页这些独立于操作系统的更高层的转载 2016-12-19 11:32:36 · 1339 阅读 · 0 评论 -
程序动态链接、静态连接的对比
为什么要动态链接? 也可以问,动态链接相对于静态连接有啥好处?首先明确动态链接和静态连接的区别:静态连接就是在程序编译阶段,将程序需要的所有东西打包放到一起;而动态链接是在程序需要运行时,根据需要动态的决定链接哪一个库,哪一个函数。举个例子,每个人就是一个程序,磁盘就是一间房子,库文件就是人们生活的必需品(如锅碗瓢盆),静态连接就是:每个人都带着自己的锅碗瓢盆进入一间房子,房子里只转载 2016-12-05 20:34:52 · 549 阅读 · 0 评论 -
在MDK V5环境下建立2440的裸机开发环境
在网上普遍的教程是使用ADS开发2440的裸机程序的,但是这东西十分的古老,在win7平台上面运行的并不是十分的流畅。在加上之前做stm32开发一直使用的是MDK的平台,所以还是打算使用MDK作为我开发2440的裸机程序的主要环境。网上关于如何使用MDK开发2440的教程还是挺多的,但是基本使用的都是老版本的MDK,但是我现在电脑上面安装的是最新的MDK 5.12的版本,其实新的版本最大的变换就是转载 2016-12-11 14:25:27 · 745 阅读 · 0 评论 -
ADS1.2与MDK不兼容问题的解决
报错如下:原因:ADS1.2与MDK不兼容 最近安装了Keil 4.73的最新版本,却莫名其妙的出现了与ADS 1.2软件不兼容的情况,弄了半天才弄好,为了大家少走点弯路,把网上论坛的解放方案分享一下(呵呵,原封不动抄周立功论坛的,内容如下;)/*****************************************************转载 2016-12-11 13:32:57 · 1948 阅读 · 1 评论