- 博客(48)
- 收藏
- 关注
转载 汇编文件 .s 和 .S 区别
.s 汇编语言源程序; 操作: 汇编.S汇编语言源程序; 操作: 预处理 + 汇编1.小写的 s文件,在后期阶段不会再进行预处理操作了,所以我们不能在其内写上预处理语句。 一般是 .c 文件经过汇编器处理后的输出。 如 GCC 编译器就可以指定 -S 选项进行输出, 且是经过预处理器处理后 ...
2018-09-26 17:10:33
3781
原创 vtol的姿态控制部分vtol_att_control_main
该部分实现VTOL机型的姿态控制部分。该部分接收来自固定翼以及旋翼的姿态控制部分的数据,并对该数据进行数据。在数据处理时针对飞机的状态:旋翼,FW还是切换状态分别进行处理。最后发布电机控制的topic,期望姿态topic。在具体分析之前,需要明确vtol飞机的四种模式: a. 切换到旋翼模式 TRANSITION_TO_MC b. 切换到固定翼模式 TRANSITION_T...
2018-02-08 15:56:49
2960
1
原创 px4 rcS脚本分析
rcS是nuttx系统启动后,执行的脚本,主要实现对飞控外设以及核心算法模块的启动。先贴一张图,这个图已经大致写出了rcS的流程。 给出代码分析。有些地方没有分析到,还望指正。1.rcS文件#!nsh## PX4FMU startup script.## NOTE: COMMENT LINES ARE REMOVED BEFORE STORED IN ROMFS.
2018-02-06 18:58:26
1769
原创 px4 CMakeLists.txt解析
上一篇中提到px4中的Makefile执行make时会调用cmake,下面对CMakeLists.txt做出解析。整个文件分为两个部分,前半部分实质是一些初始化工作。后半部分是涉及编译部分。第一部分:cmake_minimum_required(VERSION 3.2 FATAL_ERROR)#CMAKE_CURRENT_SOURCE_DIR 指 CMakeLists.txt所
2018-01-08 17:54:23
1266
原创 px4 makefile解析
关于px4的编译的流程,首先运行makefile,执行cmake,执行完之后再执行make命令,完成整个编译流程。编译px4-v2的版本,需要执行命令:make px4fmu-v2_default针对这句话,Makefile到底执行了哪些操作。makefile是一种回溯性的语言,就是从执行的命令开始一步步从文件中开始解析。为了与makefile文件保持一致。还是从头开始一步步分
2018-01-08 17:38:50
1199
1
原创 ROS文件系统+catkin工作空间及程序包
一、ROS文件系统1. 文件系统概念,包含两部分:(1)Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。(2)Manifest (package.xml): 清单,是对软件包相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。2. 文件系统工具,专门的命令工具(1)ro
2017-08-17 22:05:16
1557
原创 Ros安装须知
在Ubuntu14.04上安装ROS时完全按照文档 http://wiki.ros.org/cn/indigo/Installation/Ubuntu 来,但是最后在设置环境变量时,发现source ~/.zshrc不成功,显示emulate命令有问题,并且在运行rosrun turtlesim turtlesim_node不对。经过两天琢磨,发现是shell脚本的问题,ubuntu系统默认的是ba
2017-08-06 15:02:10
1478
原创 uboot之makefile
VERSION = 1PATCHLEVEL = 1SUBLEVEL = 6EXTRAVERSION =U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)VERSION_FILE = $(obj)include/version_autogenerated.huboot的版本号分3个级别:VERSION:主
2017-08-06 09:24:55
675
转载 s3c2440启动过程详解
转自:http://blog.chinaunix.net/uid-25605754-id-1565119.html一:地址空间的分配1:s3c2440是32位的,所以可以寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里.2:开发板上一般都用SDRAM做内存flash(nor、nand)来当做ROM。其中nand flash没有地址线,一次至少要
2017-07-29 22:06:43
997
原创 C语言中数组与指针偏移
今天在单位被同事问到指针指向数组的问题,回来敲代码总结一下。先给出代码如下:#include <stdio.h>int main(){ int a[3][2]= {1,2,3,4,5,6}; int *p, *q; long int *m; p = &(a[0][0]); q = a[0]; m = (long int *)a; printf("
2017-03-03 20:19:26
6833
原创 python中重写和特殊构造方法
class Bird: def __init__(self): self.hungry = True def eat(self): if self.hungry: print 'Ahaaaaa...' self.hungry = False else: print
2017-02-22 23:10:28
1176
转载 C中.h头文件的写法
Michael Barr建议:1. 系统中为每个功能模块创建一个.h头文件。 一个功能模块实现系统的一个方面功能,它可能由多个.c和.asm文件来实现,为它创建一个.h头文件。2.把一个模块的公共接口的函数原型放到.h文件中。这是public函数。3.不要在.h头文件中放私有函数或私有宏, 把它们放到.c文件中,并用static修饰函数。
2015-09-29 11:51:12
1207
转载 C语言中auto,register,static,const,volatile的区别详细解析
以下是对C语言中auto,register,static,const,volatile的区别进行了详细的分析介绍,需要的朋友可以过来参考下 1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register
2015-09-11 12:39:26
945
原创 软件看门狗和硬件看门狗
看门狗,又叫watchdog timer,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中的输入叫做喂狗,输出一般连接到另外一个部分的复位端,另外一个部分就是所要处理的部分,暂且称之为MCU。 在MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗电路清零,如果在超过规定的时间不喂狗,WDT定时超时,就会回给一个复位信号到达MCU,使MCU复位,防止MCU死机。总
2015-09-11 12:20:55
13986
原创 数组指针与指针数组
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针还要注意的是他们用法的区别,下面举例说明。int* a[4] 指针数组 表示:数组a中的元素都为int型指针 元素表示:a[i] (a[i])是一样的,因为[]优先级高于*int (*a)[4] 数组指针
2015-09-11 12:08:20
404
转载 进程与线程的区别和联系
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放入进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只
2015-09-09 20:31:09
306
转载 int类型究竟占几个字节
最近在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节。 后来,查了The C Programming language这本书,里面有一句话是这样的:Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction th
2015-09-06 20:37:01
1033
原创 排序算法总结
下面是算法实现,对于堆排序没有怎么调试,其他的都调试过了#include <stdio.h>#define maxsize 10typedef enum{ true = 1, false = 0}Status;typedef struct{ int r[maxsize];}Sqlist;void swap(Sqlist *L, int i, int j);void
2015-09-02 16:34:31
562
转载 TI Z-stack协议栈开发环境和工作流程
系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新
2015-08-28 22:07:36
4371
转载 ucos源码分析之OSMemCreate()
OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err);中有如下语句: OS_MEM *pmem; INT8U *pblk; void **plink; INT32U i; plink = (v
2015-08-13 17:57:10
478
转载 uC/OS-II中OSUnMapTbl[]的原理
问题描述:ucos任务队列中优先级获取问题解决:uCOS-II是一个多任务的操作系统,每个任务都是一个应用程序,它有自己的寄存器和堆栈空间,即任务控制块TCB(task control block),用来保存任务的状态,具体内容可以看TCB数据结构的定义OS_TCB。所有的任务控制块组成一个单向任务链表OSTCBTbl[],每个任务控制块中有指针指向相邻的控制块,当任务一旦建立,空任务控制块指
2015-08-13 17:26:12
900
原创 ucos-ii中os_cpu_a.asm函数解释
1、 对进入临界区和跳出临界区的函数理解#define OS_ENTER_CRITICAL() {cpu_sr = OS_CPU_SRSave();}#define OS_EXIT_CRITICAL() {OS_CPU_SR_Restore(cpu_sr);}OS_CPU_SR_Save MRS R0, PRIMASK
2015-08-13 15:45:06
2868
转载 linux设备驱动makefile入门解析
以下内容仅作参考,能力有限,如有错误还请纠正。 对于一个普通的linux设备驱动模块,以下是一个经典的makefile代码,使用下面这个makefile可以 完成大部分驱动的编译,使用时只需要修改一下要编译生成的驱动名称即可。只需修改obj-m的值。ifneq ($(KERNELRELEASE),)obj-m:=hello.oelse#generate the pathCURRENT_P
2015-08-05 18:01:54
412
转载 中断与异常的区别
一、中断:系统停止当前正在运行的程序而转向其他服务,可能是因为优先级高的请求服务了,或者是因为人为安排中断。中断是属于正常现象。 异常:是由于软件错误而引起的二、中断是CPU所具备的功能 – 硬件 异常是软件运行过程中的一种开发过程中没有考虑到的程序错误 – 软件 三、 1.中断的概念 所谓中断是指CPU对系统发生的某个事件作出的一种反应:CPU暂停正在执行的程序,保留
2015-07-28 09:11:38
2361
转载 STM32启动文件2.02过程详解
当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口
2015-07-23 15:49:39
690
转载 C函数与汇编函数之间参数及返回值传递方法
AAPCS对ARM结构的一些标准做了定义,在这里我们只重点介绍函数调用部分,如图8所示,AAPCS为ARM的R0~R15寄存器做了定义,明确了它们在函数中的职责: 图 8 AAPCS关于ARM寄存器的定义一、函数调用时的规则如下: 1、 父函数与子函数间的入口参数依次通过R0~R3这4个寄存器传递。父函数在调用子函数前先将参数存入到R0~R3中,若只有一个参数则使用R0传递,2个则使用R0和R
2015-07-22 16:06:10
11401
1
原创 c语言中位制
今天看书看到了位制的概念,对这个做出一点总结。 位制就是为了减小存储大小,把一个char, unsigned int, int的存储空间进行拆分后,对每个进行操作。 给出一段代码:#include <stdio.h>#include <stdlib.h>typedef struct test{ char a : 4; char b: 1; char c: 1;}te
2015-07-19 22:59:59
425
原创 ZigBee基础知识
1、zigbee技术特点ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MHz(欧洲)、915MHz(美国流行)三个频段上,分别具有最高250kbp/s、20kb/s和40kb/s的传输速率,传输距离在10-75m的范围内,但可以继续增加。作为一种无线通信技术,zigbee技术的优势主要表现在一下几个方面: (1)功耗低 (2)成本低 (3)可靠性高 由于采用了碰撞避免机
2015-07-14 11:41:13
2284
原创 二叉树性质
部分代码(未验证)/*本文件中写了树的基本函数,包含前序遍历、中序遍历、后续遍历*/#include <stdio.h>typedef char TelmenType;/*普通二叉树*/typedef struct BiTNode{ TelmenType data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;typed
2015-07-01 11:48:23
450
原创 整理
1、atoi函数:将字符串转化为int类型变量atol函数:将字符串转化为long类型变量atoll函数:将字符串转化为long long类型变量atof函数:将字符串转化为double类型变量这些函数的转化过程,都是将一个字符串的可读部分取到变量中遇到不可读的部分,则直接终止读取2、memcpy函数的第三个参数n表示的是字节数。
2015-06-30 23:09:43
334
原创 判断输入的字符串是不是一个有效的IP地址
#include "IPAddressValid.h"#include <string.h>#include <stdlib.h>#include <stdio.h>int fort_fun(char *str, int *pl0, int *pl1, int *pl2);int space_fun(char *str);int zero_fun(char *str,int pl0, in
2015-06-26 10:42:41
859
原创 输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.
#include <stdio.h>int push(char *pstr, char *dstr );int main(){ char *str = "]d)]fa(sdf)df[dfds(dfd)] ()*()"; char data[50]; int flag = -5; flag = push(str,data); if(flag == -1)
2015-06-12 22:53:29
5473
原创 字符串截断输出
首先输入两个整数m,n,分别代表行数和长度,要求输出,将字符串截短成n长,不够补0,多了换行继续输出 如输入: 2,8 1234567812345678123 asd输出 12345678 12345678 12300000 asd00000实现代码:#include <stdio.h>void func(int len, char *str);char * search(char
2015-06-10 16:29:43
1099
原创 把i come from tianjin.到转成tianjin. from come i
#include <stdio.h>#include <string.h>void swap(char *str);int main(){ char *data0 = "i come from tianjin."; char data1[50]; char data2[50]; int i, j; int temp; for(i=0; data0[i]!=
2015-06-08 22:37:45
430
原创 模拟c中的strstr函数
#include <stdio.h>#include <string.h>char* strstr_func(char *p, char *s);//统计字符串连续出现的次数int main(){ char *data0 = "aaaaaabcabc"; char *data1 = "aaa"; char *p; p = strstr_func(data0,data1)
2015-06-08 17:41:22
321
原创 求一个字符串中连续出现次数最多的子串
#include <stdio.h>#include <string.h>int func(char *pstr, char *sstr);int count_func(char *p, char *s);int main(){ char *data0 = "aaaaaabcabc"; char data1[6]; int i; i = func(data1,data
2015-06-08 16:33:13
248
原创 求一个字符串中出现次数最多的子串
#include <stdio.h>#include <string.h>void func(char *pstr, char *sstr);int count_func(char *p, char *s);int main(){ char *data0 = "aaabbbbcccccccc'"; char data1[6]; func(data1,data0); p
2015-06-08 15:53:33
654
原创 输入一个字符串,删除其中所有的数字,所有大写字母改成小写,其他不变,并输出
#include <stdio.h>int main(){ int i, j; int k; char data[20] = {'\0'}; gets(data); for(i=0; data[i]!='\0'; i++) { if(data[i]>='A'&&data[i]<='Z') da
2015-06-05 13:18:53
6285
原创 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉
#include <stdio.h>void char_filter(char *elem);int main( ){ char elem[255]; char *data; data =elem; printf("请输入字符串:\n"); gets(elem); char_filter(elem); printf("处理后的字符串为:\n");
2015-05-19 20:29:59
1487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人