自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++ 线程池

为什么要使用线程池?目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程...

2019-07-26 10:08:24 191

原创 c++ 线程池

为什么要使用线程池?目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程...

2019-07-26 10:07:41 173

原创 使用Github上Eigen库计算自适应信号处理中维纳滤波算法

LMS算法是自适应信号处理中最常见的算法之一,Least Mean Square最小均方算法是自适应系统最常见的算法,利用Eigen库的线性代数便利计算,得到最小均方误差MSE,程序如下/*The example of LMS algorithm for Adaptive Filtering *Least mean squares (LMS) algorithms are a class ...

2019-05-27 21:53:21 569

原创 Linux五种IO模型

1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回...

2019-05-23 10:28:54 168

原创 谈谈c++中的萃取机制 traits

template <class _Iterator>struct iterator_traits { typedef typename _Iterator::iterator_category iterator_category; typedef typename _Iterator::value_type value_type; typedef type...

2019-05-13 14:56:09 519

原创 unindent does not match any outer indentation level

写python的同志们,遇到这个问题,先看有没有 使用好table键也就是你是不是正确的缩进了,一定要缩进正确,空格不可以多也不可以少,尤其是 thonny这样的IDE...

2018-08-11 22:13:05 235

原创 【了解 Intel_Quark D2000】

从2014年开始,物联网技术不再是实验室和研究所内才讨论的技术,在消费市场中,物联网技术随着可穿戴设备、智能家居、无人机技术的推广,已经成为了当前科学发展技术的热门话题之一。作为芯片制造行业的领导者,Intel公司推出了一系列以科学家名“Galileo”、“Edison”、“Curie”的物联网开发套件。这一次,笔者拿到的是搭载Intel Quark D2000微控芯片的Intel Quark...

2018-07-30 09:57:40 879

原创 esp32启动流程简单分析

1. esp32有两级bootloader。   第一级bootloader加载第二级bootloader(Flash offset 0x1000,前面是存4k的中断向量的)到RAM中   第二级bootloader从flash中加载分区表(0x8000),main app到RAM,于是freertos启动起来了。注意:IRQ_Handler放到iram中。2. 观察下载信息简单来说,下载了几个地...

2018-07-15 10:02:23 3602

原创 esp32的第一个GPIO【测试】程序

【esp32的测试】        之前实验室买了一块esp32的开发板,一直未用,于是就拿出来把玩一下,并无实际项目所需,纯粹是一种认知型学习。关于开发环境的搭建,网上已经有很多,果云科技也提供了中文资料,这里就不赘述了,需要的同学问我要吧([email protected])Windows下面没有make工具链,所以需要开发者借助msys32编译下载套件。拿到板子的第一件事肯定是看资...

2018-07-14 20:54:52 4762

原创 setjmp、longjmp和goto的魔咒

static jmp_buf env;//通常设置成全局变量,不过还是最好用个函数get他的值,包装起来比较好setjmp(env);//第一次设置跳转点成功后返回0longjmp(env , val);/************************************************一个致命错误:setjmp在一个已经返回的子函数中,而longjmp正试图跳入这个已经返回地子函数...

2018-07-09 18:17:02 320

原创 FreeRTOS一些知识笔记【1】

【FreeRTOS列表和列表项】列表项有两种,全功能版的列表项xLIST_ITEM和迷你版的列表项xMINI_LIST_ITEM全功能版的列表项有  检查完整性,列表项值,pnext,pprevious,TCB,pcontainer迷你版的列表项有    检查完整性,列表项值,pnext,pprevious一个List中,ListEnd就是一个mini列表项List排序通过ListItemValu...

2018-07-06 21:04:03 500

原创 UCOSiii 杂谈【1】

【UCOSIII内核学习】UCOSIII中将已经就绪的任务放到任务就绪表里:优先级映射表和就绪任务列表在优先级映射表中,bit31代表优先级0,因为这样通过计算前导零CLZ来找到最高优先级任务。在就绪任务列表中,通过数组OSRdyList[]来管理相同的或者不同的优先级下的各个任务,譬如OSRdyList[4]就是管理优先级4下面的各个任务,这些任务间通过OSTCB控制块的前后指针连接,形成链表。...

2018-07-06 21:03:04 3377

原创 接下来和大家谈谈UCOSiii的问题吧(基于F103)

接下来和大家谈谈UCOSiii的问题吧(基于F103)接下来和大家谈谈UCOSiii的问题吧(基于F103)

2018-07-03 20:23:33 1239

原创 实时操作系统知识(1)

任务切换又叫作任务上下文切换。当操作系统需要运行其他的任务时,操作系统首先会保存和当前任务相关的寄存器的内容到当前任务的栈中,然后从将要被加载的任务的栈中取出之前保存的全部寄存器的内容并加载到相关的寄存器中,从而继续运行被加载的任务,这个过程叫作任务切换。                                                                        ...

2018-07-02 21:34:35 315

原创 【杂谈世界杯】国足到底差日韩足球多少年?

这届俄罗斯世界杯,截至目前6.28日,韩国2:0卫冕冠军德国,和德国一起回了家,很多球迷说是韩国运气好,踢球脏,小动作不断,德国有冠军魔咒,所以表现的很一般,另外没好运,总之褒远不如贬,但是从上一轮,德国2:1瑞典来看,德国全力争胜的欲望和技术也都在,仅稍逊于巴西世界杯而已,但是韩国凭借白脸门将赵贤祐的各种扑救,金英权的完美发挥,孙兴慜的绝对速度,最后时刻绝杀德国,我认为已经不是运气的提现了,而是...

2018-06-28 21:25:54 318

原创 Linux-串口配置,初始化及使用

【查看串口】4412采用 ttySAC*系列串口设备节点 ,即 ttySAC0 , ttySAC1 , ttySAC2 , ttySAC3【打开串口设备节点】“/dev/ttySAC3”形成fd 与 设备节点的/dev/ttySAC3链接【初始化配置串口】#include &lt;termios.h&gt;#include &lt;unistd.h&gt;struct termio { unsig...

2018-06-24 09:30:46 2796 1

原创 Linux 定时器编程小解

基础知识:全局变量 jiffies 记录时钟中断的次数,也就是system clk的节拍数          全局变量 HZ      记录1秒钟系统来几个节拍,系统节拍频率很容易得到公式 系统运行的秒数 second = jiffies / HZstatic struct timer_list my_timer;//定义一个软件定时器    struct timer_list {   s...

2018-06-22 16:30:56 186

原创 FAT-fs (sda1): error, fat_get_cluster: invalid cluster chain (i_pos 524312)

Ubuntu下插入U盘拷贝模块 .ko 文件 , 结果Ubuntu把这个文件变成了只读,动弹不得,简直就是污染了U盘U盘是 FAT32 分区 , 后来找到了两个解决办法:1. 格式化2. old.ko 改成 new.ko 文件 , 其实治标不治本但是可以用...

2018-06-21 21:56:54 7251

原创 Linux下SPI驱动简解

基础知识:第一点:硬件四线第二点:重要结构体和函数struct spi_device { struct device dev; struct spi_master *master; u32 max_speed_hz; u8 chip_select; u8 bits_per_word; u16 mode; #define SPI_CPHA 0x01 /* clock ph...

2018-06-21 21:08:25 445

原创 Linux-I2C驱动简单介绍

基础知识:第一点:主机驱动由原厂完成,一定是

2018-06-21 12:00:41 358

原创 关于EXYNOS4调试的问题

一般一个普通的字符类设备驱动要经历下面的几个步骤整个流程如下/*头文件 #include &lt;linux/init.h&gt; #include &lt;linux/module.h&gt; #include &lt;linux/moduleparam.h&gt; #include &lt;linux/stat.h&gt; #include &lt;linux/fs.h&gt; #...

2018-06-19 10:48:51 274

原创 ERROR:EXYNOS4_GPL(2) undeclared 如何解决?

基础知识: 第一点:GPIO使用需要申请 gpio_request(unsigned gpio, const char *label) 第二点:GPIO使用完要释放 gpio_free(unsigned gpio) 第三点:GPIO操作函数 gpio_set_value(unsigned gpio, int value) 第四点:通过原理图和 /arch/arm/mach-exynos/i...

2018-06-17 10:58:06 480

原创 adb驱动问题

建议使用驱动精灵,唉:(

2018-06-15 08:45:25 1449

原创 共享文件夹的一个小问题

先装好vmwaretools和open-vm-dkms网上说要装open-vm-tools-dkms,但是我的163的镜像源没有啊,这是为啥,不管了我就只装了vmwaretools和open-vm-dkms然后再挂接: mount -t vmhgfs .host:/ /mnt/hgfs就

2018-06-13 20:45:56 167

原创 itop-4412学习之路

接下来想用讯为的开发板重温下安卓,届时再和大家一起探讨安卓的学习思路,静候佳音哈

2018-06-11 13:43:53 1596

原创 openmv配机器人的色块追踪

#自动追踪红色小块,并根据机器人移动,找到红色小块import sensor, image, timefrom pyb import UARTfrom pyb import Pinprint("Tracking some color blocks!")#给stm32发送启动信息uart = UART(1, 9600)uart.write("Waitting for beginning \r")#设...

2018-06-09 21:17:58 4870 2

原创 一些设备驱动内核API (1)

//cdev_add将字符设备 p 添加入Linux系统内核,并通过 dev 设置设备号//返回 0 代表添加成功int cdev_add(struct cdev *p, dev_t dev, unsigned count){ int error; p-&gt;dev = dev; p-&gt;count = count; error = kobj_map(cdev_map, dev, count...

2018-06-05 21:38:36 403

原创 一些文件系统内核API (1)

文件权限掩码#define S_IRWXU 00700//所有者#define S_IRUSR 00400#define S_IWUSR 00200#define S_IXUSR 00100#define S_IRWXG 00070//用户组#define S_IRGRP 00040#define S_IWGRP 00020#define S_IXGRP 00010#define S_IRWXO ...

2018-06-04 10:24:33 398

原创 一些内核同步API (2)

//获取信号量,成功后sem的计数器减1;不成功后进程将进入睡眠状态而一直等待下去//注意区分down_interruptible(),down_killable()//由于会使进程进入睡眠状态(不响应任何信号量,阻塞),所以不建议使用void down(struct semaphore *sem){ unsigned long flags; raw_spin_lock_irqsave(&amp;...

2018-06-03 19:09:49 254

原创 一些内核同步API (1)

typedef struct{        //原子操作是最小执行单位 int counter;     //值}atomic_t//将原子变量v增加istatic inline void atomic_add(int i, atomic_t *v){ asm volatile(LOCK_PREFIX "addl %1,%0"      : "+m" (v-&gt;counter)     ...

2018-06-03 10:33:17 236

转载 插曲关键字——static

一,static全局变量           我们知道,一个进程在内存中的布局如图1所示:      其中.text段保存进程所执行的程序二进制文件,.data段保存进程所有的已初始化的全局变量,.bss段保存进程未初始化的全局变量(其他段中还有很多乱七八糟的段,暂且不表)。在进程的整个生命周期中,.data段和.bss段内的数据时跟整个进程同生共死的,也就是在进程结束之后这些数据才会寿终就寝。 ...

2018-06-03 09:57:34 111

原创 一些内核定时API (2)

//比较两个时间结构体的大小,前大1,后大-1,return相减是为了保险static inline int timespec_compare(const struct timespec *lhs, const struct timespec *rhs){ if (lhs-&gt;tv_sec &lt; rhs-&gt;tv_sec) return -1; if (lhs-&gt;tv_sec ...

2018-06-02 09:07:30 267

原创 一些内核定时API (1)

//创建一个软件定时器static struct timer_list my_timer;//定义一个软件定时器    struct timer_list {   struct list_head entry;          //定时器链表的入口   unsigned long expires;           //定时器超时时的节拍数   void (*functio...

2018-06-01 16:14:33 388

原创 一些内存管理API

//释放页面块,释放的页面块从 page 开始,个数等于2的order次方个void __free_pages(struct page *page, unsigned int order){ if (put_page_testzero(page)) { if (order == 0) free_hot_cold_page(page, false); else __free_pages_...

2018-05-31 11:49:37 771

原创 [六足机器人]基于ucosii的F407VGT6

主函数#include "gui.h"#include "stm32f4xx.h"#include "delay.h"#include "led.h"#include "usart.h"#include "ucos_ii.h"#include "pwm.h"#include "control.h"#include "app_

2018-05-31 11:14:52 574

原创 一些内核中断API(3)-END

//tasklet_struct的state的bit[1]:1-此软中断可在此CPU上执行 0-此软//中断不可在此CPU上执行//将tasklet_struct的state的bit[1]置1static inline int tasklet_trylock(struct tasklet_struct *t){ return !test_and_set_bit(TASKLET_STATE_RUN,...

2018-05-30 15:16:40 161

原创 STM32的IAP功能

STM32 的内部闪存( FLASH)地址起始于 0x08000000,一般情况下,程序文件就从此地址开始写入。此外STM32 F10X是基于 Cortex-M3 内核的微控制器,其内部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序完成启动,而这张“中断向量表”的起始地址是0x08000004,当中断来临, STM32 的内部硬件机制亦会自动将...

2018-05-28 22:25:19 983

原创 一些内核中断API (2)

//卸载IRQ链表中与输入参数相对应的 irqaction 描述符void remove_irq(unsigned int irq, struct irqaction *act){ struct irq_desc *desc = irq_to_desc(irq); if (desc &amp;&amp; !WARN_ON(irq_settings_is_per_cpu_devid(desc))) ...

2018-05-28 22:21:39 252

原创 一些内核中断API (1)

//软终端描述符struct tasklet_struct{ struct tasklet_struct *next;   //指向下一个元素 unsigned long state;           //TASKLET_STATE_SCHED TASKLET_STATE_RUN atomic_t count;                //计数字段,=0才可以进行中断处理 void (*...

2018-05-28 14:49:38 341

原创 Linux的一些学习笔记

/*Linux内存管理*/物理地址是虚拟地址的子集(64位CPU寻址64TB)MMU将CPU发出的虚拟地址变为物理地址,交给内存总线(段式地址转换,页式地址转换)内存申请和释放,kmalloc和kfreestatic void *malloc(int size)//要申请size字节大小的内存空间{       void *p;       if (size &lt; 0) error("Mal...

2018-05-27 20:57:17 158

空空如也

空空如也

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

TA关注的人

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