自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Ubuntu16.04 Xenomai3.x 系列移植笔记----测试与编程

目录构建一个xenomai 3 应用编译一个基于rtdm的模块运行应用程序运行一个xenomai 3应用实时的I / O的支持关于RTnetRTnet相关特性RTnet 基本要素RTnet 配置文件RTnet 测试RTnet编程代码构建一个xenomai 3 应用详细的构建与安装见https://gitlab.denx.de/Xenomai/xe...

2020-03-20 10:10:30 2648 2

原创 Ubuntu16.04 Xenomai3.x 系列移植笔记----安装指导

目录1.相关介绍2.源码目录分析3.安装Cobalt内核3.1 了解Cobalt内核3.2 配置和编译Cobalt内核3.3 Cobalt 内核参数3.4 Cobalt 配置样例3.4.1 构建Cobalt/x86内核(32/64bit)4. 安装 Mercury 内核5.安装 Xenomai 库和工具5.1 准备工作5.2 配置测试安装结果...

2020-03-20 09:29:11 3252

原创 Ubuntu16.04 Xenomai3.x 系列移植笔记-----引导概要

第一部分 引导概要目录硬件支持Xenomai实现实时内核原理关键调研 1.单内核与双内核选择 2.是否需要非POSIX实时API故障指南 硬件支持 xenomai支持大量硬件,链接:https://gitlab.denx.de/Xenomai/xenomai/-/wikis/Supported_Hardware该链接分为两大类:支持的CPU架构和已...

2020-03-19 15:38:04 999

原创 Ubuntu 16.04 Xenomai3.x 系列移植笔记----绪论

1.基于Linux的实时操作系统商业化的实时操作系统不开源,又收费;linux系统开源,支持硬件多,资源丰富但是linux是一个分时的通用 操作系统,在任务调度方面采用的是公平原则,不允许被其他任务打断,就限制了其实时化应用,必须对其改进,使其成为一款实时操作系统。1.1双内核机制:①调度的改进 ② 时钟的改进 ③增加内核抢占...

2020-03-19 15:22:48 439

原创 Ubuntu16.04 Xenmai3.x 系列移植笔记--前言

CSDN账户之前很久没有登陆了,很多有一些求助留言今天才看到,这里也跟大家说声抱歉。之前停更的ucos系列我没有想到会有这么多的浏览量,让我觉得有写下去的必要,所以后续时间我也会慢慢更新,现在我已经从单片机转向linux了,以前有些知识有点生疏,平时更多时间也会放在linux这块,所以更新会比较慢。由于平时笔记都放在云笔记上,很乱写的不好,请见谅,如有错误请留言指出。 ...

2020-03-19 15:08:57 244

原创 uC/OS-II基础知识终章

     大概一个多月前,开始系统接触uC/OS-II,因为平时工作比较忙,每天都是抽一两个小时来看书,原本想把自己在书中看到的知识点全部都通过CSDN记下来,但是发觉打字排版太耗费时间,同时我写的东西也都是比较基础的知识点,也没有必要再在网络上重写一次,耗费网络资源,也给自己节省点时间做别的事。目前任哲的这本书,我已经看完了,但是才更新到第四章,如果有读者可以自己去买书看看,这本书对于源码的讲解...

2018-09-22 19:11:40 416

原创 uCOS-II 的任务的创建、挂起、恢复、初始化、启动(二)

继续上一节的讲解,uCOS-II通过OSTaskCreate()和OSTaskCreateExt()来创建任务,后者相当于前者的一些扩展。下面对OSTaskCreate()的源码进行讲解: INT8U OSTaskCreate( void (*task)(void *pd), //指向任务的指针 void * pdata, ...

2018-09-10 00:10:20 5465 2

原创 uCOS-II 的任务的创建、挂起、恢复、初始化、启动(一)

又到了来废话的时候了,今天这一节,我们把第三章结束,所讲述的内容如标题所示,废话不多讲,切正题。任务堆栈:所谓堆栈,就是在存储器中按数据“后进先出”原则组织的连续存储空间。为了满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其他函数时的需要,每个任务都有自己的堆栈。所有uCOS-II任务的任务控制块都有一个指向该任务堆栈的指针。任务堆栈的创建:为了方便定义堆栈,在系统文件...

2018-08-27 00:10:30 5652

原创 uCOS-II中的任务(一)

           uCOS-II操作系统内核的主要工作就是对任务进行管理和调度,理解什么任务、任务的结构和ucos-II对任务的管理办法,对了解uCOS-II的体系结构无疑是最重要的。           任务的基本概念:           当我们在开发一个复杂的项目时,一个简单有效的方法就是“分解”,将大的应用项目分解成若干小的项目,在计算机中运行这些小的项目,也就完成大的项目开发...

2018-08-26 01:01:46 1680

原创 嵌入式系统开发预备知识(二)常用数据类型及数据结构

    今天这一节讲的是ucos-II常用数据类型及数据结构,总结我在第三章所看到,这些知识点非常重要,务必牢记。    本节主要内容有控制块,队列与堆栈,位图,程序流程转移的中断实现方法。   控制块:    操作系统中的每一个被管理对象,不管这个对象是软件模块还是硬件装置,他们至少会有一个记录其基本信息的数据结构,操作系统就一句这个控制块提供的信息来对这些对象那个进行管理。控制块就...

2018-08-21 00:55:06 874

原创 嵌入式系统开发预备知识(一)

        本书是根据任哲《嵌入式实时操作系统ucos-II原理及应用》学习所做笔记,为解决网络上同学学习ucos-II所产生的一些疑惑,同时也方便自己以后对于知识点的复习,所以才正正经经写的,可能写的比较多,也比较杂。       本小节主要针对开发工具的一些讲解,网上的资源很多,也比较杂,如果不想去找,胡乱下载可以联系我,联系方式在我该系列的第一篇博客里面。      BC3.1精...

2018-08-20 01:12:28 467

原创 任哲《嵌入式实时操作系统uC/OS-II》 基本概念与预备知识

     爬坑系列第二讲:这两天手腕实在疼,以后再也不喝这么多酒了。     这两天看了第三章后面的知识,发现PC下的ucos学习真的很不方便,因为之前有简单地学习过LINUX,书上面的很多概念也都接触过,只不过学的不深,用的太少,概念都模糊了。    废话不多讲,今天把任老师本书的前两章做一个简单的回顾。序言(基本概念)有些人看书不喜欢看序言,觉得那都是作者的废话,我认为序言章节是对整本...

2018-08-19 22:16:44 1670

原创 任哲《嵌入式实时操作系统uC/OS-II》 预备工具

    进入工作后,白天负责公司项目开发,晚上蹭加班绩效在公司学点别的东西。虽说待在嵌入式部门,但基本上负责的项目都是微控制器类方面的开发,所以要加强学习真正的嵌入式方面的学习。第一个坑uC/OS-II。我学的东西都很杂,没有系统的学习过,所以趁着实习期时间多一点,来系统地复习(预习)一下。    我学uC/OS-II用的是任哲的《嵌入式实时操作系统uC/OS-II原理及应用》第四版。也是比较...

2018-08-14 20:39:54 2069 1

原创 一款简单物流车的开发

   这是我的大学毕业设计题目,虽然不是很难,但也不是很简单;付出了自己很多心血。。。。。不煽情,切正题。题目要求物流车安装两支机械手,对处于轨道上的若干物体进行物理排序,物块的数字信息存储在条形码中,控制芯片采用STM32F103ZET6,没记错应该是这个;识别行进轨道采用红外寻迹黑白线,我知道很LOW,加入自动提货,缺货排序,货物数量自我判断(这个也许就叫机器学习吧,尴尬,给自己贴金)。排序算...

2018-06-30 19:02:13 285 2

转载 Connecting to 192.16.0.128:22... Could not connect to '192.16.0.128' (port 22): Connection failed.

问题状况表现1  这个问题一般是你 的什么配置影响了虚拟机的网卡网关设置!!!。   问题状况表现2      这个问题一般是你 的什么配置影响了虚拟机的网卡网关设置。          解决办法  网上的那些解决方案,我都试过,比如。http://blog.csdn.net/fengasdfgh/

2018-01-14 16:29:42 6831 3

转载 linux eth0正在决定ip信息 [失败] 解决办法

今天启动服务起,在局域网ping不通,检查网线正常。解决办法:1.进入/etc/sysconfig/network-scripts2.编辑ifcfg-eth0 如下:# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]DEVICE=eth0BOOTPROTO=static#HWADDR

2018-01-14 16:19:10 1389

转载 Linux IP出现inet6 addr :fe80::20c:29ff:fe47:fd61/64 scope:l

经常出现(inet6 addr :fe80::20c:29ff:fe47:fd61/64 scope:link1)这种情况的不要担心了,试试这个方法,这也是我折磨了好多天整理的,不喜勿喷,谢谢。虚拟机设置权限: sudo chown book:book fs_mini_mdev -R虚拟机更改IP: ifconfig eth0 192.168.0.22 1、动态ip地址

2018-01-14 15:35:37 28429 3

原创 错误:声明指定了两个以上的数据类型

在编译cpp文件的时候,GCC提示错误: 错误:‘‘的声明指定了两个以上的数据类型‘’在此作用域中尚未声明一般当结构体,类的定义后忘记 ; 时会出现这个错误提示。

2017-08-30 16:00:00 2182

原创 改进版简易卖票系统,线程操作

前面一篇文章采用fork()函数创建子进程来卖票,随着学习的深入,发现这种操作太占用cpu资源了,所以改进了方法,利用线程,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属于一个进程的其他的线程共享进程拥有的全部资源。代码中用到互斥量,下面给出解释

2017-08-15 20:35:22 247

原创 加入信号量的简易卖票系统

首先,我们在一般的基础上,不同进程访问同一内存,即共享内存的前提上加入信号量,两者比对看,前者可能售卖同一张票,即两个进程同时访问共享内存,加入信号量就是为了杜绝这种情况的发生,因为信号量就是为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行进程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。

2017-08-14 20:13:33 564

原创 /usr/bin/ld: cannot open output file a.out: Permission denied,解决办法在最后

这种情况发生的原因有很多种,今天列举一种,如后遇到再补充,先描述现象:笔者,这种情况是发生在:两个终端,其中一个终端生成并且正在执行a.out文件,在另外一个终端相同目录下,编译另外一个.c文件,出现在这种情况,根据我的描述大家也差不多知道这种情况的发生,笔者以前也遇到这样的情况,不过不是这种情况,但是解决办法都是相同的,首先我们首先想到kill函数,因为没有pid,或者说我们没有

2017-08-14 15:18:25 10459 1

原创 c语言时间常见获取办法

C语言中如何获取时间?精度如何?1 使用time_t time( time_t * timer )精确到秒2 使用clock_tclock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount()精确到

2017-08-12 00:05:06 725

原创 linux下创造一个假终端,同终端操作实现相同功能

在虚拟机终端输入命令操作,是我们常见也是最基本操作,今天调用system()函数可创造一个假的终端操作窗口#include #include #include #include int main(){ printf("请选择文件:\n"); system("ls /home"); char str[100]; while(1) { fgets(str,1000,st

2017-08-10 10:41:22 233

转载 c语言缓存机制

1.概念缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。 2.为什么要引入缓冲区比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再

2017-08-07 11:47:55 719

原创 字符串与指针

1、字符串的存储与访问字符串的访问char str[N];第i个字符的地址:str+i第i个字符:*(str+i)思考???以下写法是否正确?char s1[N];s1[]=“Welcome”;s1=“Welcome”;错误!必须逐一赋值或使用函数,且数组长度要足够大。可以使用字符指针解决:ch

2017-08-07 11:33:42 296

原创 c语多级指针

指针用途:1、使程序简洁、紧凑、高效2、内存的动态分配3、内存地址的直接处理4、函数调用时批量参数的传递5、复杂数据结构的简洁表达等许多其它数据类型难以实现的复杂操作等等……一、 多级指针1、为什么需要使用二级指针------使用二级指针是为了函数调用结束可以使作为函数实参的指针的值的改变保留下来------数据结构链

2017-08-07 11:28:30 232 1

转载 自动化学生如何面对嵌入式学习

在此只是引自亚嵌培训的建议(因为之前回答很多这样的问题,这次打算罗列下):在此只引用部分,如何学习嵌入式系统重点:在定制操作系统内核里将应用程序或驱动一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等应用软件的选择,如果我们选择了,在CE启

2017-08-06 22:59:11 411

原创 除了C,我们还要学习什么

      单靠C语言找工作吗?光靠拿它的证书和一些简单的逻辑运算是肯定不行的,C语言的优势主要是写底层软件的开发,例如给硬件写驱动,如果你是搞嵌入式软件的还需要学习C++来做上位机软件的编写,这样才能达到基本的要求C基础扎实,评判标准:自己想去的公司历年面试题都做一遍,分数70+往上(最好还要会C++)数据结构/算法知识网络知识TCP/IP数据库知识操作系统知识

2017-08-06 22:47:34 666

原创 51单片机对GPS卫星信号的解码并通过LCD1602或12864显示

主程序如下#include "main.h"#include "LCD1602.h"#include "GPS.h"//¶¨Òå±äÁ¿unsigned char KEY_NUM = 0;char temp,temp1,b,d;bit Page = 0;unsigned char xdata Display_GPGGA_Buffer[68];unsigned char xdata

2017-08-06 22:36:00 2579 1

原创 对指针的总结

      指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。        程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符

2017-08-06 22:29:42 236

原创 3种提高效率的排序

今天说一下 鸡尾酒排序,堆排序和快速排序。鸡尾酒排序实在冒泡的基础上改进而来的,先说下冒泡排序#include // 交换函数void swap (int a[], int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}// 打印数组void printA (int *a, int len){ int i;

2017-08-06 22:18:15 364

原创 我印象中的指针与数组4

这一节主要是讲数组与指针的结合,这是比较难也是在笔试题中经常会考的1.c语言指针数组如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组。指针数组的定义形式一般为: dataType *arrayName[length];[ ]的优先级高于*,该定义形式应该理解为:dataType *(arrayName[length]);括号里面说明arrayName是一个数

2017-08-06 22:02:55 167

原创 我印象中的指针与数组3

我印象中的指针与数组2中简单介绍了数组的定义与使用,这一篇把指针的定义与使用说下,后面的续集就开始说这两者的联系与应用了1.概念计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用4个字节,char 占用1个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。 我们

2017-08-05 00:12:08 155

原创 我印象中的指针与数组2

由于前面写的太大了,没有注重基础,今天先把数组的基本定义和简单使用写一下,后面附了一个简单的数组计算,就当是练习1、什么是数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。      在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同

2017-08-05 00:01:57 160

原创 求助,帮忙设计基于stm32的地图导航

参加西门子居然进了国赛,这点自己也没有想到,记得在回答专家们问题的时候,主裁突然问了一句,你为社么不直接设计一个定位机器人,当时和团队成员突然就蒙了,这不就是说,我们偏题了吗!!!!      的确,虽然自己参加的是工程创新类项目,但自己做的产品似乎的确无法应用到制造领域,自己提出来也就是一个想法,产品很多功能也没有实现,比如最重要的,地图形式的导航定位,虽然用lcd显示了经纬度信息,但这个替

2017-08-04 23:45:37 3657 1

原创 利用C语言编写一个通讯录,包括用户界面

记得好久之前写的,今天一个学弟问我,我才想起来,主要是依靠链表完成的,细节方面做的还需要改进,主题架构就是这样了#include #include #include #define TRUE 1#define FALSE 0typedef struct _add{ int ID; char Name[20]; char Address[30]; char Compa

2017-08-04 23:37:15 3055

原创 链表与顺序表的区别

       顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据。      链表是通过指针来描述元素关系的一种数据结构,他可以是物理地址不连续的物理空间。不能随即访问链表元素,必须从表头开始,一步一步搜索元素。它的优点是:对于数组,可以动态的

2017-08-04 23:28:57 232

原创 我印象中的指针与数组1

什么叫指针数组,类比下以前看到的int,char,double数组,他们定义的数组里面的元素的类型,所以指针数组通俗定义“一个数组中的所有元素保存的都是指针“。说到这里,我希望大家能够先把我一下说的几点记下来,就算不懂,背下来,慢慢就懂了。我当初就是这么学的:  1.变量名是地址的助记符,我们常说的变量地址指的是变量首地址,比如:int a,不可能把四个字节地址都表达出来,这里说到地址,又不得

2017-07-17 19:18:31 173

原创 在数组下的选择、冒泡排序

对于相同类型的大数据,我们常采用在数组,为了方便快捷查询,我们总希望对这个数组进行排序,下面介绍两种排序:冒泡,选择排序,其实选择排序只是冒泡排序的一种进化版,减少了运算次数,提高运行效率,不扯了,下面开始。第一个为选择,第二个为冒泡#include #define N 10int main(){ int a[N] = {9,8,7,6,32,40,3,2,1,0}; int i,

2017-07-15 15:55:03 447

原创 单片机串口通信紊乱

参加西门子比赛的时候用到了51单片机,涉及到多级通信,当时把卫星信号传输,红外信号发射,语音控制等几个功能全整合到51上,想通过一块芯片实现,奈何51太渣渣,串口就一个。实现三个模块之间的数据通信实在太累了。  当时想全把波特率设置成9600,再加上延时通信,感觉在理论上可以行得通,整合了好几天,时间上的处理一直达不到理想效果,出现最普遍的现象就是程序跑飞,虽然能通信,但是不是按照人为设想的那

2017-07-12 19:29:12 1169 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除