自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苏幕遮

慎思笃行,不忘初心。

  • 博客(49)
  • 资源 (3)
  • 收藏
  • 关注

原创 本博客的目录视图

收录了本博客的全部链接,方便查看与记录。本博客将继续完善,努力提高。嵌入式Linux工作两年经验总结及大纲初步规划1.c/c++C/C++指针、数组与内存管理(一)C/C++指针、数组与内存管理(二)C/C++指针、数组与内存管理(三)C语言链表基础(一)嵌入式C_C++语言精华——笔记堆和栈的区别(转)C语言数组和指针详解(转)2.qt编程Qt编程基础(信号和槽机制、字符串操作、容器类)3.shell脚本编程Linux shell脚本编程总结(一、运算符)

2020-08-10 14:46:25 244 1

原创 linux驱动之电阻触摸屏驱动开发与滤波算法

本文基于ns2009驱动程序,主要内容是ns2009电阻触摸屏的采样、滤波。

2021-01-07 08:32:10 2874 2

原创 需求分析之行为和模式

关键概念:分析模式、行为模型、事件、顺序图、状态图、状态表达。需求模型由各种元素组成:基于场景(用例)、基于类(对象和类)和行为(事件和状态)。

2020-12-06 11:01:28 1036

原创 嵌入式Linux平台下TTS(文本转语音)技术的实现

本文通过ekho8.0实现的tts技术能够准确读出英文、初步实现语法语义分析。能识别大部分多音字成语、正确读出年月日。并且由于ekho采用基于人录音的语料库的声音较其他大部分开源TTS引擎都平滑自然。支持普通话、台湾话、客家话、藏语和英语等。

2020-11-13 11:44:41 7081

原创 需求建模之基于类的方法

基于类的分析模型的元素包括类和对象、属性、操作、CRC模型、协作图和包。

2020-11-03 09:17:50 1462 1

原创 需求建模之基于场景的方法

第八章 基于场景的方法概念:文字记录是极好的交流工具,但并不一定是表达计算机软件需求的最好方式。需求建模使用文字和图表的综合形式,以相对容易理解的方式描绘需求,更重要的是,可以更直接地评审它们的正确性、完整性和一致性。步骤:基于场景的建模从用户的角度表现系统。在基于场景建模时,将更好地理解用户如何与软件交互,发现没有覆盖到的利益相关者所需的主要系统功能和特性。质量保证措施:必须评审需求建模工作产品的正确性、完整性和一致性,必须反映所有利益相关者的要求并为从中导出设计建立基础。1 需求分析

2020-11-01 16:12:18 4078

原创 软件工程之需求工程

主要记录了获取需求相关,重点在于第五小节的构建分析模型

2020-11-01 15:18:50 2066

原创 软件工程之敏捷过程

本篇主要记录了敏捷开发的概念、步骤以及质量保证措施。介绍了六种敏捷过程模型:极限编程、工业极限编程、scum、动态系统开发方法、敏捷建模和敏捷统一过程。

2020-11-01 10:12:22 3687

原创 软件工程之过程模型

第四章过程模型学习记录,记录了惯用过程模型、传统过程模型两大类、与统一建模语言。惯用过程模型包含四个小类瀑布模型、增量过程模型、演化过程模型、并发模型,传统过程模型包含两个小类原型开发、螺旋开发。

2020-10-26 21:11:02 2515 1

原创 软件工程之软件过程结构

第二章软件工程、第三章软件过程结构学习记录

2020-10-24 21:52:17 3125

原创 构造函数、虚函数方法求1+2+3+...+n

构造函数解法、虚函数解法、以及C++构造函数、虚函数知识点补充

2020-10-21 21:27:16 491

原创 C语言实现字符串的替换插入方法

1.先看一段代码,分析运行结果int stringFunc(){ char str1[] = "hello world" ; char str2[]= "hello world" ; char*str3 = "hello world"; char*str4 ="hello world" ; if(str1 == str2) printf("str1 and str2 are same .\n") ; else print

2020-10-18 11:39:47 1569 2

原创 二维数组中的查找指定数字

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的个二维数组和一个整数,判断数组中是否含有该整数。

2020-10-17 10:19:16 1228

原创 C/C++赋值运算符函数实现

例子一、判断如下程序的运行状况:#include <iostream>using namespace std;class A{private: int value;public: A(int n) { value = n; } A(A other) { value = other.value;} void print() { std::cout<<value

2020-10-11 11:54:12 609

原创 opencv-4.3.0嵌入式Linux移植

OpenCV-4.3.0是较新的OpenCV版本,最新的版本是OpenCV-4.4.0,由于GitHub太慢总是下载失败,不得已就移植OpenCV-4.3.0这个版本用着先。在OpenCV中,新技术的支持和一些现有算法的优化都是体现在最新的版本中(目的是为了让用户用新版本),旧版本通常只修正bug。一、移植的先前准备如下:1.centos-7虚拟机2.安装cmake3和make工具二、移植的过程如下:...

2020-09-29 12:01:01 1103

原创 三个例子学会linux设备树的使用

举了读取设备树文件下节点下没有子节点、节点下有子节点,挂在i2c上的节点下没有子节点三种设备节点信息的例子讲设备树。

2020-08-09 13:03:49 1812

原创 Linux驱动之模拟PWM驱动

pwm(脉冲宽度调制)是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。可运用于如控制电子设备的音量大小、LED灯的亮度渐变、电机强度控制等。 脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替...

2020-08-08 15:07:14 1672

原创 Qt编程基础(信号和槽机制、字符串操作、容器类)

一、信号和槽二、字符串操作 QString string1 = "hello"; QString string2 = "world"; //常用字符串拼接四种方法 QString string = string1 +" " + string2; qDebug()<<"+:"<<string; string1.append(" "); string1.append(string2); qDebug()<&l

2020-08-01 11:57:40 507

原创 Linux驱动之在sys文件系统下创建节点的编程框架

在之前一篇博文讨论Linux内核空间与应用空间数据交流的几种方式提到了如下几种方式:1.输入子系统,这个是单向的,只能内核->应用层。通常用于输入设备如按键、触摸屏将键值或者坐标上报给用户空间2.文件操作集合,ioctl/read/write等函数,对应了字符设备等设备类型,这个是双向的,内核层和应用层可以互相发数据。通常用于各种需要对硬件设备进行读写的设备驱动程序3.sys文件系统,也就是属性节点,同样也是双向的。通常用于读取或者修改驱动程序的配置,比如在一个由pwm控制的LED程序中设

2020-07-18 11:50:50 3659

原创 嵌入式C_C++语言精华——笔记

Break和continue语句都可以用在循环中,用来跳出循环(结束循环);break语句还可以用在switch语句中,用来跳出switch语句。Break语句通常用在循环语句和开关语句中。当break用于开关语句switch时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。当break语句用于do-while、for、while循环语句时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句连在一起,即满足条件便跳出循

2020-07-08 22:49:03 449

原创 imx6ul之内核升级与双系统启动

平台:tq-imx6ul内核版本:Linux-4.1.15查看当前系统分区如图所示可以得知:uboot分区:/dev/mtd0uboot环境变量分区:/dev/mtd1logo分区:/dev/mtd2内核分区:/dev/mtd3设备树分区: /dev/mtd4自定义内核分区:/dev/mtd5自定义内核分区:/dev/mtd5在tq-imx6ul中增加自定义分区的方法很简单,只在uboot源码里的mx6ul_14x14_evk.h文件修改宏定义MTDPAR..

2020-07-08 21:59:06 1112

原创 Linux shell脚本编程总结(四、函数传参与返回值)

本文主要介绍shell脚本的传参与函数返回值,首先看个表格,了解一下shell脚本编程中几个特殊变量。$0 当前脚本的文件名 $n 传递给脚本或函数的参数,n是一个数字,表示是第几个参数。如:$1是第一个参数,$2是第二个参数,以此类推 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数 $? 上个命令执行状态或者函数的返回值 $$ 当前shell脚本的进程id 举个例子说明:#

2020-07-05 14:39:46 708

原创 Linux内核态与用户态的数据通信方法

本文主要介绍了Linux内核与数据交流的几种方式

2020-07-02 22:32:18 2133

原创 Linux驱动之按键驱动长按检测

现在发现一个问题,Linux下的按键驱动,增加了长按检测。但是在长按的时候不往应用层上报长按的值,很奇怪先做个记录待以后分析。现在的模式是,周一到周五发现问题,到周末才会专心写博客填坑了。...

2020-07-01 16:02:08 2902

原创 Linux shell脚本编程总结(三、控制语句、循环语句与正则表达式)

在shell脚本中,控制语句有if语句、case语句(类似C语言的switch...case),循环语句有while、for和until循环。

2020-06-24 10:56:18 360

原创 Linux shell脚本编程总结(二、字符串操作)

在本文将主要讲到在shell中如何操作字符串,包括:字符串的截取、拼接、提取、替换等操作

2020-06-23 15:57:04 341

原创 Linux shell脚本编程总结(一、运算符)

主要会写一些shell脚本下操作字符串的方法

2020-06-23 08:35:50 518

原创 C/C++指针、数组与内存管理(三)

关于C/C++的内存管理,博主发现一篇博文已经总结的很好了。内存管理这里做几点总结:(1)函数体内的局部变量保存在栈上,但栈的内存容量有限,在Linux下可以使用ulimit -s查看栈的内存容量。在程序中注意不要超过这个值。当相应的范围结束时,局部变量就不能在使用。(2)使用malloc/new等动态内存分配函数,内存从堆上获得。(3)动态内存的生存周期可以由自己决定,但问题也多。使用完毕后一定要使用free/delete函数将申请的内存释放,并将指针指向NULL,避免产生野指针。(.

2020-06-20 16:18:18 232 2

原创 C/C++指针、数组与内存管理(二)

上一篇讲了指针与数组的一些区别,这篇将只讲解指针。计算机在存储数据时必须跟踪的3种基本属性(1)信息存储在何处(2)存储的值为多少(3)存储的信息是什么类型比如int a = 0;信息存储的地方:&a存储的值: 0存储的信息类型:int这是一种比较简单的方法,定义一个简单的变量。声明语句指出了值得类型和符号名,还让程序分配内存,并在内部跟踪该存储单元。在c/c++中,还可以声明指针变量存储数据。指针是一个变量,其存储的是值的地址,而不是值本身。如何声明一.

2020-06-20 12:41:30 175

原创 C/C++指针、数组与内存管理(一)

在C/C++中,指针应该是一个难点。在之前也是自己的一个薄弱点,还好在今年转到应用层之后对指针的理解加深了,在此也做个总结。说到指针,总是和内存管理分不开。内存管理在一个程序中的重要性不用多说。指针和数组的区别1.数组名不是指针。#include <stdio.h>int main(){ char str[10]; char *pstr; printf("length: str = %d, pstr = %d\n", sizeof(str), si

2020-06-20 11:54:30 372

原创 嵌入式Linux工作两年经验总结及大纲初步规划

2020年6月19日,距毕业2018年6月30日两年时间。不知道怎么写,先按时间记个流水账。2018年3月入职,距今在这家公司呆了两年三个月。调试过三种不同处理器的板子,搞过的项目只有一个,量产的项目为0。但涉及的东西不少,因为这个项目大部分的工作都是自己负责了。虽然涉及的东西不少,但是研究的深的好像又不多。做个总结,也做个大纲。以后一一写博客补上。那就从底层到上层开始吧。 首先就是uboot,uboot方面做过的主要是logo显示、上电加载镜像的方式、uboot层的硬件驱...

2020-06-19 11:43:51 570

原创 ekho嵌入式Linux移植全过程

第一部分:背景说明:Ekho(余音)是一个把文字转换成声音的软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。ekho的大致框架流程是1:读取文本字符2: 查字典匹配对应的音频信号数据3:将音频信号通过pulseaudio送入声卡发声。第二部分,配置,交叉编译相关依赖的关系ekho ----&...

2019-11-27 14:36:51 4190

原创 Linux进程间通信(一)

进程是操作系统中一个很重要的概念。进程是操作系统分配资源的基本单位,也是CPU调度的基本单位。Linux作为多任务系统,能够同时运行几个进程。通常各个进程必须保持独立,避免彼此干扰。但是有时候,应用程序必须彼此通信。举例来说:1.一个进程生成的数据传输到另一个进程时2.数据由多个进程共享时3.进程必须彼此等待时4.需要协调资源的使用时进程是操作系统中一个很重要的概念。进程是操作...

2019-11-19 09:56:47 368

原创 Linux内存管理(一)

内存管理是计算机编程最为基本的领域之一,实际编程中,理解内存管理器的能力与局限性非常重要。在大部分系统语言中,比如C/C++必须进行内存管理。一、进程虚拟内存(1)未初始化的全局变量(.bss段)Bss段用来存放没有初始化和初始化为0的全局变量。现代大多数操作系统在加载程序时,会把所有bss全局变量清0,但为保证可移植性手动清0是个好习惯。(2)初始化过的全局变量...

2019-09-07 14:04:42 135

原创 Linux声音解决方案与TTS引擎

一、ALSA+Pulseaudio在嵌入式Linux中的声音解决方案Linux音频系统比较复杂,各层间有很多交叉,可能是最无序的子系统,并且它有两套音频驱动框架: OSS (Open Sound System)和ALSA (Advanced Linux Sound Architechture),所以底层驱动有OSS和ALSA两套API。 ALSA经过多年的发展,基本统一了Linux声卡...

2019-07-26 13:55:50 7342

原创 imx6ul之按键驱动添加

一、给imx6ul添加按键驱动在linux4.1.15中给imx6ul添加按键驱动涉及到设备树文件和驱动源码如下linux-4.1.15/arch/arm/boot/dts/tq-imx6ul.dtslinux-4.1.15/drivers/input/keyboard/gpio_keys.c在板子首先需要修改设备树文件,在tq-imx6ul.dts中添加如下代码:gpi...

2019-05-22 17:10:42 1478

原创 imx6ul之8723BU蓝牙驱动移植

主控芯片/架构 imx6ul/cortex-a7平台信息+平台厂家信息 nxpWIFI模块/芯片型号 RTL8723BU作业系统(linux/android/...) linuxKernel Version 4.1.15关于RTL8723bu wifi+BT的驱动移植请参考https://blog.csdn.net/qq_22902919/article/details/8...

2019-05-22 17:05:32 3944 2

原创 imx6ul之LCD驱动移植

首先贴上一位大佬的博客,对LCD有很详细的描述https://blog.csdn.net/longxiaowu/article/details/24319933在uboot和kernel中,都存在这样一个结构体fb_videomode 描述LCD的各项参数,结构体代码如下:struct fb_videomode {const char *name; //液晶屏名字(可选)u32...

2019-05-22 16:57:31 4758 4

原创 imx6ul之开机启动速度优化与内核裁剪

一、优化linux内核部分1.裁剪linux内核,将不必要的功能、不需要的驱动去掉,能够开机后加载的就编译成模块加载。能优化的选项做优化。2.对于使用了ubi文件系统的nandflash,修改linux内核配置开启fastmap另外修改内核源码在linux-4.1.15/drivers/mtd/ubi/build.c的第83行static bool fm_autoco...

2019-05-20 08:56:25 2753

原创 Linux文件系统(一)

一、Linux内核子系统简介Linux支持多个进程的并发运行,每个进程都请求系统资源,比如运算、内存、网络连接等其他一些资源等。内核负责处理所有这些请求,根据内核完成任务的不同,可以将内核分为进程管理、内存管理、文件系统、设备控制、网络功能五个子系统。二、Linux文件系统 在Linux操作系统中,文件系统是用来组织、管理、存放文件的一套管理机制。Linux支持多种文件系统类型,也就...

2019-05-20 08:41:13 434

OpenCV4.3.0安装一揽子资源

移植OpenCV4.3.0的一些资源,包括移植和源代码。

2020-09-29

视频播放器程序

一个基于QT和MPLAYER的视频播放器程序,供大家学习参考。

2019-03-06

最新嵌入式Linux应用开发完全手册

最新嵌入式Linux应用开发完全手册

2019-03-05

空空如也

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

TA关注的人

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