嵌入式系统
文章平均质量分 92
洪流之源
这个作者很懒,什么都没留下…
展开
-
连接器脚本
连接脚本GNU-ld链接脚本浅析本文乃转载, 某人在其基础上做了少量修改。 原作者的E-mail是.ac.cn。 完成于2005.11.5-2005.11.80。 Contents1。 概论2。 基本概念3。 脚本格式4。 简单例子5。 简单脚本命令6。 对符号的赋值7。 SECTIONS命令8。 MEMORY命令9。 PHDRS命令10。转载 2014-03-19 20:23:23 · 711 阅读 · 0 评论 -
ov5640_mipi.c分析
在ov5640芯片手册中看到这样一句话:The OV5640 supports both a digital video parallel port and a serial MIPI port.所以ov5640既支持数字并口视频传输,同样支持mipi接口规范。摄像头插入到开发板上面的时候,如果有匹配的驱动程序,就会调用到probe函数,先从probe函数来分析转载 2016-11-30 10:00:49 · 5403 阅读 · 0 评论 -
ARM通过usb转串口实现接收GPS数据
http://blog.csdn.net/fate_archer/article/details/13168475前期工作是:搭建交叉编译链,网络文件系统内核版本:Linux-3.4.2我使用的linux内核版本是linux-3.4.2,其他内核版本也可以实现。我的usb转串口线的芯片是pl2303,使用usb转串口接收gps数据,需要有支持转载 2016-12-21 18:19:32 · 791 阅读 · 0 评论 -
UCOS-II之字节对齐问题 sprintf
用到ucos这个操作系统,简单容易移植,占用资源少。一般来说,在ucos上运行标准C函数应该是没有什么问题的。这时候问题就出现了 当ucos运行到Cortex-M3上时候,这个时候使用sprintf进行浮点数格式化输出的时候就会有些问题,无法正常输出浮点数,操作系统也会停止运行,处于崩溃状态。 操作系统崩溃有很多原因,我遇到的两个原因是:堆栈溢出和数据对齐。不知道首先遇到的是哪个问题,如果使用MD转载 2017-02-27 15:51:28 · 833 阅读 · 0 评论 -
pid控制算法系列(1)常用的控制算法
1.控制系统的基本结构:控制目的: 控制的根本目的就是要使控制对象当前的状态值与用户的设定值相同(最大限度的接近)。基本思想: 用户设定值SV与被控制对象当前的值PV两者同时送入由特定硬件电路模型或特定的软件算法组成的控制算法逻辑中,利用不同的控制算法对SV和PV进行分析、判断、处理,从而产生当前应该输出的控制信号OUT,控制信号经过执行机构施加到控制对象上,从而产原创 2017-04-13 17:23:09 · 7301 阅读 · 1 评论 -
STM32 ADC 单次模式、连续模式、扫描模式
ADC单通道:要求进行一次ADC转换:配置为单次模式使能,扫描模式失能。这样ADC的这个通道,转换一次后,就停止转换。要求进行连续ADC转换:配置为连续模式使能,扫描模式失能。这样ADC的这个通道,转换一次后,接着进行下一次转换,不断连续。ADC多通道:要求进行一次ADC转换:配置为单次模式使能,扫描模式使能。这样ADC的多个通道,按照配置的顺序依次转换一次后,就停止转换。要求原创 2017-04-27 11:28:59 · 28310 阅读 · 8 评论 -
linux进程控制系列(1)进程创建fork、vfork
进程创建就是一个正在运行的进程去创建出另外一个进程,而这个正在运行的进程被称为父进程,被父进程创建出的进程称为子进程。在linux中可以通过在父进程中调用系统调用函数fork()或者vfork函数创建出一个子进程,下面是两个系统调用函数的原型:#include #include pid_t fork(void);返回:子进程中返回0,父进程中返回子进程的进程ID,出错返回-原创 2016-11-11 22:33:55 · 582 阅读 · 0 评论 -
linux进程系列(5)进程链与进程扇
在linux编程中我们或许需要创建多个进程才可以完成任务需求,那么我们怎么创建多个进程呢?下面我们介绍一下进程链与进程扇的概念 所谓进程链就是父进程创建一个子进程,创建的子进程再次创建出属于自己的子进程,这样依次往下循环,如下图所示。 所谓的进程扇就是一个父进程创建出多个子进程,如下图所示。 下面是进程链与进程扇的示原创 2016-11-22 22:25:59 · 3900 阅读 · 1 评论 -
odroid-xu4(ubuntu mate 16.04)源码编译opencv 3.2
sudo apt-get updateapt-get install libqt4-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev l原创 2017-06-10 11:24:20 · 2020 阅读 · 0 评论 -
STM32的AD用DMA方式时的请注意初始化顺序
今天无意之间看到了这篇帖子,是斑竹好久前发的~~~我突然意识到我的数据好像一直没有错位,看到这个我又试验了一下,发现把DMA_Cmd(DMA1_Channel1, ENABLE);放置到哪儿都是一样的啊~~~这个是原帖部分:STM32的AD用DMA方式时的请注意初始化顺序珍情岁月(84848098) 17:19:23 DMA_DeInit(DMA1_Channel1)转载 2017-06-23 16:26:33 · 3472 阅读 · 0 评论 -
syslog简介——系统日志写入API
一、简介syslog是Linux系统默认的日志守护进程。默认的主配置文件和辅助配置文件分别是/etc/syslog.conf和/etc/sysconfig/syslog文件。通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。二、配置文件/etc/syslog.conf转载 2017-11-26 18:05:30 · 1882 阅读 · 0 评论 -
linux服务器部署应用程序
1.守护进程程序写成守护进程,fork两次。2.系统日志调用openlog, syslog, closelog使用syslog或rsyslog服务,配置/etc/syslog.conf或/etc/rsyslog.conf例子:local2.* /var/log/app.log重启syslog生效/etc/init.d/syslog restartsysl转载 2017-11-26 20:19:34 · 1410 阅读 · 0 评论 -
linux守护进程详解及创建,daemon()使用
一,守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库转载 2017-11-26 20:31:28 · 9397 阅读 · 0 评论 -
最简单的驱动hello.c与Makefile模板
一、hello.c文件分析#include#includeMODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello,init the module!"); return 0;}static void hello_exit(void){ prin转载 2016-11-29 09:20:39 · 557 阅读 · 0 评论 -
linux系统启动概述
一、Linux操作系统的构成1、内核1) 操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统2) 控制系统和硬件之间的相互通信3) 决定着系统的性能和稳定性。2、Shell3、文件系统4、应用程序二、Linux操作系统的基本概念1、文件和文件系统 1) 文件:数据或设备的一种逻辑组织 2) 文件系统:文件间关系管理的一种逻原创 2016-09-29 22:49:26 · 387 阅读 · 0 评论 -
在ubuntu 16.04安装ROS Kinetic
ROS_Kinetic系列学习(一),在ubuntu 16.04安装ROS Kinetic。ubuntu16.04 已经发布一个月了,ROS的Kinetic也已经发布,需要了解ROS发行版及支持维护的时间等,可以参考如下网页:http://wiki.ros.org/Distributions+ubuntu 16.04对中文支持很好,直接支持中文输入,使用体验不错。1. ubun转载 2016-09-18 16:08:40 · 39691 阅读 · 2 评论 -
bootload开发之异常向量表
首先了解一下什么是异常,异常就是原创 2014-07-25 12:07:06 · 977 阅读 · 0 评论 -
Linux内核的组成
Linux内核主要有进程调度(SCHED)、内存管理(MMU)、虚拟文件系统(VFS)、网络接口(NET)、进程通信(IPC)5个子系统组成。1. 进程调度进程调度控制系统中多个进程对CPU的访问,使得多个进程能够在CPU中“微观串行,宏观并行”地执行。进程调度处于系统的中心位置,内核中其它子系统都依赖它,因为每个子系统都需要挂起或恢复进程。在设备驱动编程中,当请求的资源不被满足原创 2014-07-26 20:40:34 · 976 阅读 · 0 评论 -
ARM处理器启动流程———S3C2440、S3C6410、S5PV210
S3C2440支持从norflash和nandflash启动。Nandflash不参与统一编址,CPU总是从编址的0地址处取指令执行,为了实现从nandflash启动,S3C2440芯片从在CPU启动的时候,首先将nandflash前面4kB的内容复制到芯片中的叫做stepping stone的sram中,steppping stone只有4KB大小,4KB的代码会完成一些硬件初始化的工作原创 2014-07-26 21:06:54 · 1606 阅读 · 0 评论 -
MMU技术精解
http://bbs.ednchina.com/BLOG_ARTICLE_292841.HTM转载 2014-09-16 23:37:18 · 594 阅读 · 0 评论 -
mmap系统调用
mmap系统调用(功能)void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。addr:指原创 2014-11-24 13:22:25 · 639 阅读 · 0 评论 -
mmap设备操作
mmap设备操作映射一个设备是指把用户空间的一段地址关联到设备内存上。当程序读写这段用户空间的地址时,它实际上是在访问设备。mmap设备方法需要完成什么功能?mmap方法是file_oprations结构的成员,在mmap系统调用发出时被调用。在此之前,内核已经完成了很多工作。mmap设备方法所需要做的就是建立虚拟地址到物理地址的页表。int (*mmap)原创 2014-11-24 13:58:22 · 626 阅读 · 0 评论 -
虚拟内存区域
虚拟内存区域虚拟内存区域是进程的虚拟地址空间中的一个同质区间,即具有同样特性的连续地址范围。一个进程的内存映象由下面几部分组成:程序代码、数据、BSS和栈区域,以及内存映射的区域。一个进程的内存区域可以通过查看/proc/pid/maps08048000-0804f000 r-xp 00000000 08:01 573748 /sbin/rpc.statd #tex原创 2014-11-24 13:45:03 · 1484 阅读 · 0 评论 -
STM32启动文件深度解析
STM32启动过程全面解析,包括启动过程的介绍、启动代码的陈列以及深入解析。相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断原创 2015-07-16 16:41:14 · 5773 阅读 · 0 评论 -
位运算之位操作符
4.2.1.1 位与&(1)注意:位与符号是一个&,两个&&是逻辑与。(2)真值表:1&0=0 1&1=1 0&0=0 0&1=0(3)从真值表可以看出位与操作的特点是,只有1和1位与结果为1,其余全是0。(若1表示真,0表示假,则全是真才为真,只有有一个为假就为假)(4)位与与逻辑与的区别:位与的时候两个操作数是按照二进制位彼此对应相与的,逻辑与是两个操作数作为整体相与的。(举例原创 2016-02-19 22:32:37 · 3180 阅读 · 0 评论 -
CMake交叉编译配置
from:http://www.tuicool.com/articles/yAFnQ3很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。CMake给交叉编译预转载 2016-04-14 10:21:06 · 3175 阅读 · 2 评论 -
CMake Cross Compiling
Cross compiling is supported by CMake starting with version 2.6.0.Cross compiling means that the software is built for a different system than the one which does the build.This meansCMake cannot转载 2016-04-14 10:22:33 · 2467 阅读 · 0 评论 -
linux串口编程 非规范模式 read()问题
在linux下编写终端程序时,有规范模式 ,非规范模式(原始模式特殊的非规范模式)之分。不用于终端,而是在串口这种使用情况下,一般设置为原始模式(非规范的一种特殊情况)。但用read()函数,希望从串口接收指定的数量的字符时,往往接收到的实际字符数,都与指定的不同。如本人用read()希望接收 10 bytes的数据,但实验后发现,分了几次才接收到,俩次接收2bytes ,两次接收3bytes转载 2016-07-12 13:43:36 · 6753 阅读 · 0 评论 -
i.MX6q SABRE Board for Smart Devices
Linux on ARM Homei.MX6q SABRE Board for Smart DevicesSkip to end of metadataCreated by Robert Nelson, last modified on Jun 17, 2016Go to start of metadata翻译 2016-08-11 11:09:33 · 2115 阅读 · 0 评论 -
树莓派(raspberry pi)增加swap空间大小
https://blog.csdn.net/greenlight_74110/article/details/82388801转载 2018-11-15 14:31:49 · 2146 阅读 · 0 评论