buildroot构建文件系统

1.简介

  开发嵌入式软件时,有很多时候,我们将uboot+kernel+应用程序,统一打包成烧写文件,这样方便实际生产,因此构建出烧写文件的文具就必不可少。   构建Linux上的文件系统有多种工具,例如:yocto,buildroot,各种工具有自己的有缺点,本wiki主要记录buildroot构建文件系统。
  之前提及的busybox,busybox一般只包含基础的命令,比如常见的ls cd等等,还有一些更复杂的工具,例如grep,find,telnet等。这个busybox称作linux工具 里的瑞士军刀。
 &

Read more

Java上的builder机制

1.简述

Java的Builder机制,主要是将复杂对象的构建构建过程与其具体表示分离, 使得相同的构建流程可以创建不同的产品实例。Builder模式是一种创建型 设计模式,针对复杂对象构建,复杂对象主要表现:

1.1 多参数构造器

  • 问题1:参数顺序的混乱 比如:HttpParam(url, method, params, headers, timeout, cache)等等,顺序容易搞混。
  • 问题2:重载爆炸 为了支持可选参数,需要写多个重载构造器,比如,支持仅传递url, 仅传递url+method的... Builder方案,通过链式调用,明确参数含义,无需关心顺序,可以选参数进行设置
    H

Read more

Cmake使用记录-基本使用

1.概述

Cmake作用编译工具,作用较大,主要记录以下几点:

  • 基础的使用功能,理解常见的变量及其对应的含义。
  • 扩展功能,编写自己的宏(条件)。
  • 实际环境中使用,如何生成makefile。 ## 2.基础功能使用 基础功能,主要是变量,基础的逻辑等等。 ### 2.1 相关变量 ```c ${CMAKE_CURRENT_SOURCE_DIR} #当前源码路径 set(CMAKE_C_STANDARD 99) #设置c语言标准 CMAKE_INSTALL_PREFIX #安装目录
### 2.2 逻辑控制
这类逻辑较简单:
```c
if(WIN32)
    message(S

Read more

Dlib学习人脸比对

1.Dlib库

本文主要是记录一下使用dlib的一些笔记(实现在嵌入式平台上实现人脸比对【简易登陆】,中间使用的库主要是opencv dlib,涉及嵌入式,还有需要对dlib库进行交叉编译)。中间参考了很多网络资料,本文是记录下整个学习使用过程中的细节。如果有什么错误大家可以提出。
另外备注:交叉编译过程使用过dlib-19.1,结果发现dnn功能还没有完善,于是重新改为dlib-19.7.交叉编译opencv和dlib均使用cmake(不在详细描述)。

dlib库是干什么的

  1. 官方说明
    dlib官方链接:点击这里
    dlib库其实挺庞大的,library下面有:
Algorithms
A

Read more

zigbee快速使用指南

zigbee型号说明

此处省略写,zigbee协议栈使用:
cc2530-2.5.1a。CC2530是2.4Ghz,芯片其它说明,略。

官方说明

  1. zigbee芯片型号 ,使用TI公司的CC2530芯片。
  2. 协议栈 ,CC2530-2.5.1a,该版本支持了OTA。
  3. 协议栈构成,略。
  4. 本说明纯属自己学习过程笔记,中间如果存在错误,希望大家可以指正。本说明主要是从代码层面快速运用zigbee模块(CC2530)。

zigbee开发

zstack结构

1.协调 路由 终端 听起来就不复杂,
协调--组建网络,发起
路由--中间转发等等呢
终端--最终的设备(可能这么叫不专业)
2.组建网络

Read more

linux上container_of宏使用

1.简介

  在Linux上container_of宏使用较为常见,该宏的作用是通过知道结构体中一个成员的地址,从而
计算出,整个结构体的地址,在linux上很多结构体中都包含有struct list_head结构体,通过该list,就可以
得到整个结构体的地址,从而进行操作。

2.解释

  在知道container_of之前,首先需要先知道一个offsetof(TYPE, MEMBER)

#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)

上述结构是计算出MEMB

Read more

Linux上交叉编译opencv

1. 简介

主要介绍linux上交叉编译opencv2.4.9,运行目标平台PX3SE(类似RK3128) linux上程序安装目录结构

bin----指应用程序文件
lib----指库文件
usr/bin 是系统自带的应用
usr/local/bin 是自己安装的应用和自己写的全局脚本(安装opencv里面的一些应用在里面
usr/lib 系统自带的lib
usr/local/lib 是自己安装的libopencv的安装lib包都在里面

//编译opencv使用工作目录(以px3se为例说明)

C:/home/dong/linux_sdk/buildroot/output/host/

Read more

ALSA音频框架简述

1. ALSA概述

ALSA(Advanced Linux Sound Architecture,高级linux声音体系)简写,是linux上主流 音频体系架构,提供了音频和MIDI的支持。是Linux系统下一套标准的音频驱动框架。

2. ALSA框架

ALSA框架分层在内核空间部分和应用空间部分。

2.1 Linux内核空间的alsa驱动

在Linux2.6后已经集成进入linux源码。 备注:在内核层使用alsa驱动时,请保证内核编译时,支持上 CONFIG_SYSVIPC=y 如果没有支持上该选项,使用时,会出现错误

ALSA lib pcm_dmix.c:1038:(snd_pcm_d

Read more

QT5+Opencv2.4.9配置笔记

简述

距离上一次写博客笔记已经有很长一段时间了,看来没有坚持下来啊,这次写博客主要是记录一下QT5上调用Opencv2.4.9时的过程。
之前一直使用VS进行Opencv的编写,感觉还可以,不过最近用到了QT上调用Opencv,之前在坑里躺了一下,无奈所以写了一下笔记。
备注:这次使用的QT5为MSVC编译器的(微软的VC编译器),如果你使用了MinGW(MingGW是指是Minimalist GNU on Windows的缩写),这就要注意了要使用MinGW重新编译一下opencv,否则下面的笔记是不可以进行使用的哦,下面的笔记使用的是自带MSVC的QT(VS已经把opencv默认编译好了)

Read more

STM32上RTOS内存配置说明

1.说明

  在STM32上进行RTOS(以rt-thread为例)配置动态内存管理方式,我们需要设置一个动态内存管理的访问, 也就是管理区域的大小,起始地址等。

2.管理内存的范围

  在使用操作系统前,先看一下原始的分配情况:startup_stm32f103xe.s

; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
;   <o> S

Read more