自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 BES音频框架分析---Audioflinger

Audioflinger音频策略的执行者,负责输入输出流设备的管理及音频流数据的处理传输。 Audioflinger.c完成af创建及音频流管理。Audioflinger的创建:app_init(void) af_open(); af_open(void)//af_stream_cfg_t参数初始化 af_thread_tid =osThreadCreate(osThread(af_thread), NULL)//创建af线程 af_thread(void const *argument

2022-03-23 10:34:29 2761 2

原创 Linux---进程调度及CFS调度器

Linux的调度算法(1)O(N)调度器 (2)O(1)调度器 (3)CFS调度器O(N)调度器发布于1992年,从就绪队列中比较所有进程的优先级,然后选择一个最高优先级的进程作为下一个调度进程。优点:操作简单,便于理解。 缺点:时间消耗太大,在众多可运行进程或者多处理器的环境下都难以胜任O(1)调度器在Linux2.5系列内核开始至Linux2.6.23版本之前,优化了选择下一个进程的事件,为每个CPU维护一组进程优先级队列,每个优先级一个队列,这样在选择下一个进程时,只需要查询优先

2022-02-25 16:55:28 1243

原创 Linux---进程管理基础知识和创建流程

进程与线程什么是进程?进程 = 程序 + 执行程序通常指的是完成特定任务的一系列指令集合或者指的是一个可执行文件。进程不仅局限于一段可执行代码,它还包括进程需要的其他资源,例如打开的文件、挂起的信号量、内存管理、处理器状态、一个或者多个执行线程和数据段等。什么是线程?线程被称为轻量级进程,是操作系统调度的最小单元,通常一个进程可以拥有多个线程。区别:进程拥有独立的资源空间,而线程则是共享进程的资源空间。它俩有如此的差异,是不是创建的方式也不一样呢?经典操作系统里的进程

2022-02-25 14:50:34 974

原创 成长与发展---制定和实现职业目标的方法

仔细规划当你知道要去哪里以及如何到达那里时,到达目的地总是更快,制定职业规划能很好地帮助你憧憬光明的职业未来,并更快地实现目标你可以通过以下方法开始:制定目标。 你的最终目的或目标是什么?具体说明你心中想要的职位。思考所需的技能。 动脑筋想出你在实现最终目标的道路上所需的技能,勇于寻求指导,联系那些处于你渴望的职位上的人,问问他们是如何做到的——你可能会惊讶于他们的故事。标明路线。 与任何长期旅行一样,职业道路上总会有一些停顿,标记下你认为在通往理想职位的道路上可能出现的角色,以及实现目标所

2022-02-25 10:00:13 926

原创 成长与发展---如何在工作中名副其实地脱颖而出

在职场中,对高层职位的竞争已变得越来越激烈,正因如此,从人群中脱颖而出并沿组织阶梯向上攀爬也变得愈加困难。如果你办事有方,职业道路就可能与同样有才能的同事截然不同。 在工作中大放异彩的秘诀并不只是变得更明智、更有动力和信心,或更积极,还要了解如何利用拥有的技能、才华和精力让自己脱颖而出。图片以下方法可以帮助你发掘潜力,从普通的执行者跃升为职场中的佼佼者。不断超越。 除了做好本职工作,还可以突破自我,处理那些本职以外的工作,但一定要确保将这些项目和想...

2022-02-25 09:40:23 243

原创 成长与发展---5G标准战场上的成长

2014年9月,从事无线通信理论研究的我博士毕业,希望做一些贴近实际应用,能将理想变为现实的东西,比如做算法设计SE,算法落产品,或者做标准代表,将算法技术写进行业标准。华为正好可以提供这样的平台和机会。进入部门后,我开始在通信技术最前沿5G领域做技术储备工作。从波形到软空口,再到高频,工作按部就班地开展着,而自己的知识储备也在不断丰富。当然,我还是喜欢瞎倒腾:比如,利用工具箱简化仿真代码、利用公司的云平台尝试分布式计算、做技术总结的时候整两篇论文、到样机外场帮忙扛设备,推推测试车。现在回过头来看,也许

2022-02-24 11:11:02 100

原创 成长与发展---以前意气风发,现在也不能怂(协议开发)

入职一个月,我就被派到了如火如荼的产品联调一线。像天书一样的各种通信名词让我感觉快要“溺水”了。白天支撑定位问题,晚上等大家走了,我就把当天遇到的复杂问题分析写在联调日记中。这是5G基站产品首次交付,联调组网环境场景多,结构复杂,得益于自己喜欢画画的爱好,我把这些问题定位通过手绘成为了图文并茂的指导书,将生僻的专业名词结合手绘图更加直白的解释。一个月下来积累了厚厚的三本联调日记,后面这些总结记录的内容后面支撑了三个5G产品的交付蓝本。其中,5G高频远场多波束切换场景手绘指导书,以简单、直接、易懂的呈现方

2022-02-24 11:05:58 81

原创 成长与发展---怎么给博士军团当好“博导”?(PL)

可能看我是一个女生,有人会问我,当PL难吗?我挠挠头,一时不知怎么回答。PL要“从独立贡献者的单打独斗”转身到“带着团队、兄弟们冲”,这应该是最难的一点。这就好比赛跑,原来我只是一个人冲刺,我可以控制我的能力、体力、随时调整策略;但现在是一场“多人多足”的比赛,限制团队胜利的可能是短板、可能是大家的步伐配合,而PL就是这支队伍的参与者、总教练,要对自己、对团队、对组织负起责任。这就从一个简单的自然科学问题,演变成了复杂的社会科学问题,涉及工程技术、心理学、管理学。不要只盯着“一亩三分地”20

2022-02-24 11:02:02 5130

原创 成长与发展---我的“夺金”之路(算法)

2017年6月,当我在网站上按下“提交Idea”按钮的那一刻,我并不知道,三个月后,我将击败4000多个创意,夺得无线创新大赛的金奖,那个时候,我入职刚满一年。“创新”新概念2016年4月,我踏入华为大门,加入了无线网络研究部。“咱做研究的人,创新是一项必备技能”,入职第一个星期,导师向我传授经验时说:“创新可以是从论文里获取的算法,也可以是工作中遇到难点想到的解决方案,只要能应用形成价值,就是你的创新成果。” 作为一名刚刚从算法领域出来的应届生,导师的这番话颠覆了我之前对于创新就是“推公式...

2022-02-24 10:35:46 539

原创 成长与发展---领了一个“不情愿”的任务后

2019年2月下旬,办公室里像往常一样充斥着激烈的讨论声和清脆的键盘声。刚刚解决完一个问题,我坐在工位上喝水,看看时间,突然有些恍惚。是啊,从入职到现在已经差不多一年了。趁着新鲜感还在,回顾和总结下自己的这一年。三天搞定“不太情愿”的任务2018年7月,硬装结束,作为新入职的“萌新”,我怀揣着兴奋又忐忑的心情,步入真正的开发工作中。漂亮地完成了一个小的后台需求后,导师交给我一个新的任务——前端任务管理切换。其实就是把前端代码中,一个之前用ExtJS写的模块,用React重新实现。这是纯前端的工作

2022-02-24 10:33:39 197

原创 Linux 输入子系统

Input子系统介绍 以前我们写一些输入设备(键盘、鼠标等)的驱动都是采用字符设备、混杂设备处理的。问题由此而来,Linux开源社区的大神们看到了这大量输入设备如此分散不堪,有木有可以实现一种机制,可以对分散的、不同类别的输入设备进行统一的驱动,所以才出现了输入子系统。 输入子系统引入的好处:(1)统一了物理形态各异的相似的输入设备的处理功能。例如,各种鼠标,不论PS/2、USB、还是蓝牙,都被同样处理。 (2)提供了用于分发输入报告给用户应用程序的简单的事件(even...

2022-02-23 17:08:17 1032

原创 编程-- 四则运算

描述输入一个表达式(用字符串表示),求这个表达式的值。保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’,‘*’,‘/’,‘(’,‘)’,‘[’,‘]’,‘{’,‘}’。且表达式一定合法。数据范围:表达式计算结果和过程中满足|val| \le 1000 \∣val∣≤1000,字符串长度满足1 \le n \le 1000 \1≤n≤1000输入描述:输入一个算术表达式输出描述:得到计算结果示例1输入:3+2*{1+2*[-4/(8-6)+7]}...

2022-02-23 13:24:04 629

原创 编程-- 无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pw...

2022-02-22 16:57:43 132

原创 编程练习--字符串最后一个单词的长度

描述计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)输入描述:输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。示例1输入:hello nowcoder复制输出:8复制说明:最后一个单词为nowcoder,长度为8 #include "stdio.h"#include "string.h"int main(){ ch

2022-02-22 16:35:58 625

原创 LINUX GPIO设备初始化

2022-02-21 09:21:48 519

原创 LINUX 设备树DTS文件加载与驱动初始化流程

1 DTS文件加载流程1.1 DTS文件定义 DTS即Device Tree Source设备树源码,Device Tree是一种描述硬件的数据结构。 在Linux2.6中,Arm架构的板级硬件细节过多的被硬编码在arch/arm/plat-xxx和arch/arm/match-xxx,比如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data,这些板级细节代码对内核来讲只不过是垃圾代...

2022-02-18 16:11:25 7328

原创 LINUX设备驱动概述

软件与硬件互补硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬件上的组合逻辑与时序逻辑;软件则实现了具体应用,它按照各种不同的业务需求而设计,满足了用户的需求。硬件较固定,软件则很灵活设备驱动硬件和软件之间的纽带设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA 通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件和数据。通过设备驱动应用软件只需要

2022-02-18 09:32:24 217

原创 全局变量,局部变量,静态变量,动态变量,外部变量的区别

全局变量,局部变量,静态变量,外部变量的区别全局变量是在所有函数体的外部定义的,程序的所有部分(甚至其他文件中的代码)都可以使用.全局变量不受作用哉的影响,总是可用的(也就是说,全局变量的生命期一直到程序的结束)局部变量出现在一个作用域内,它们是局限于一个函数的.局部变量经常被称为自动变量,因为它们在进入作用域时自动生成,离开作用域时自动消失.静态变量是指那些本不应该在程序整个生命期里存在的变量可以在程序的整个生命期里存在的变量(如局部变量),要达到这样的效果,只要在这样的变量前加上static

2022-01-27 15:30:21 1730

原创 数组、指针、数组指针、指针数组

数组和指针的区别与联系(详细)_cherrydreamsover的博客-CSDN博客_数组和指针的区别1、实际上并不存在多维数组,所谓的多维数组本质上是用一维数组模拟的。2、数组名是一个常量(意味着不允许对其进行赋值操作),其代表数组首元素的首地址。3、数组与指针的关系是因为数组下标操作符[],比如,int a[3][2]相当于*(*(a+3)+2) 。4、指针是一种变量,也具有类型,其占用内存空间大小和系统有关,一般32位系统下,sizeof(指针变量)=4。5、指针可以进行加减算术运

2022-01-26 13:32:03 652

原创 多线程相关概念

在多任务操作系统中,同时运行的多个任务可能都需要访问/使用同一种资源 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务同步是一种合作关系,为完成某种任务而建立的多个进程或者线程之间的协调调用,次序等待,传递消息告知资源占用情况互斥是一种制约关系,当一个进程或者多个进程进入临界区后会进行加锁操作,此时其他进程(线程)无法进入临界区,只有当该进程(线程)使用后进行解锁其他人才可以使用,这种技术往往是通过阻塞完成总的来说,两者的区别就是:互斥是通过竞争对资源的独占使用,彼此之间不需要知道对

2022-01-26 10:21:34 152

原创 makefile

交叉编译详解 一 概念篇_p_fly的博客-CSDN博客_交叉编译本地编译:在当前编译平台下,编译出来的程序只能放到当前平台下运行。 交叉编译:在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序:交叉编译链就是为了编译跨平台体系结构的程序代码而形成的由多个子工具构成的一套完整的工具集。同时,它隐藏了预处理、编译、汇编、链接等细节,当我们指定了源文件(.c)时,它会自动按照编译流程调用不同的子工具,自动生成最终的二进制程序映像(.bin)交叉编

2022-01-26 10:20:48 1188

原创 动态库与静态库

库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库, 函数库分为静态库和动态库两种。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤: 静态库(.a、.lib)在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。静态库特点总结如下:静态库对函数库的链接是放在编译时期完成的。 程序在运行时与函数库再无瓜葛,移植方便。 浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。 ...

2022-01-26 10:20:06 95

原创 sizeof用法

1.定义sizeof是一个操作符(operator)。其作用是返回一个对象或类型所占的内存字节数。2.语法sizeof有三种语法形式:1)sizeof (对象); 或sizeof 对象;//对对象的数据类型进行求值2)sizeof (表达式); //值为表达式的最终结果的数据类型的大小3)sizeof (数据类型);//sizeof (类型)各种数据类型在16位、32位和64位系统下所占字节差异简介输出数据的类型,其格式符和意义...

2022-01-21 11:37:23 5308

原创 C语言试题

B,K=0只是赋值,结果不是真,while(1)才会一直执行。A,没有{},for循环只执行下一行A,指针的值是地址,而数组的值虽然也是地址,但是却是一个常量,所以不能给常量赋值。a[5]="abcd"是正确的,字符串常量"abcd"表达式使用的值就是这些字符所存储的地址(在常量区),而不是这些字符本身。双引号做了3件事:1.申请了空间(在常量区),存放了字符串2. 在字符串尾加上了'/0'3.返回地址B,表达式i++是后自增,先赋值再自加(可以理解为2句:m...

2022-01-10 08:53:35 138

原创 BES通话功能调试

BES通话代码说明通话功能初始化完成注册通话回调函数int app_init(void)---->void BesbtInit(void)---->int besmain(void)----> void app_hfp_init(void)---->btif_hf_register_callback(app_hfp_event_callback);当耳机连接手机 ,并且手机启动通话状态后,执行回调函数。void app_hfp_event_callback

2022-01-07 14:08:48 2469 2

原创 程序员实用网站

链接直达:GitHub链接直达:stackoverflow链接直达:CSDN链接直达:v2ex链接直达:quora

2021-12-31 15:57:25 234

原创 linux常用指令

linux常用指令

2021-12-31 15:25:21 528

原创 BES提示音

int app_voice_report(APP_STATUS_INDICATION_T status, uint8_t device_id)---->int app_voice_report_handler(APP_STATUS_INDICATION_T status, uint8_t device_id, uint8_t isMerging)----->void media_PlayAudio_locally(AUD_ID_ENUM id, uint8_t device_id)/voi.

2021-12-31 14:19:51 680 1

原创 C语言内存管理

进程如何使用内存?毫无疑问,所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段,其中数据段、BSS和堆通常是被连续存储的——内存位置上是连续的,而代码段和栈往往会被独立存放代码段(text segment):用来存放可执行文件的操作指令,也就是说是它是可执行

2021-12-31 09:31:50 1710

原创 volatile关键字

加上volatile关键字,这时候,编译器知道该变量的值会在外部改变,因此每次访问该变量时会重新读取详解C/C++中volatile关键字 C语言关键字volatile(注意它是用来修饰变量而不是上面介绍的volatile)表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程。 一般说来,volatile用...

2021-12-29 16:14:13 226

原创 BES 互斥锁应用

一、同步与互斥的概念  现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源;多个任务之间有依赖关系,某个任务的运行依赖于另一个任务。【同步】:  是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据。【

2021-12-29 11:00:04 370 1

原创 数据类型转换

float类型转换为整型int8_tvoid quantize_data(float*din, int8_t *dout, uint32_t size, uint32_t int_bit){#define _MAX(x, y) (((x) > (y)) ? (x) : (y))#define _MIN(x, y) (((x) < (y)) ? (x) : (y)) float limit = (1 << int_bit); for (uint32_t i = 0;..

2021-12-23 16:41:01 333

原创 用二维数组实现共享buf

注意加锁保护,防止两个线程同时读写造成数据不正确int8_t mfcc[MFCC_LEN][MFCC_COEFFS];//线程A使用的int8_t mfcc_buf[MFCC_LEN][MFCC_COEFFS];//共享bufint8_t mfcc_seq[MFCC_LEN][MFCC_COEFFS];//线程B使用的#define MFCC_FEAT_SIZE (MFCC_LEN * MFCC_COEFFS)uint32_t index = 0;void thread_A(){………

2021-12-23 16:21:14 1762

原创 BES RTOS系统应用实例

/start thread and msg define*/static osThreadId thread1_tid;static void thread1(void const *argument);osThreadDef(thread1, osPriorityAboveNormal, 1, 2048, "thread1");APP_MESSAGE_BLOCK msg;/end thread and msg define*//*start fifo queue define*/#defi.

2021-12-20 08:51:25 362

原创 配置Samba

背景Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件,并可以设置写入权限,实用性极佳。切换到root权限ticy@ubuntu:~$ sudo passwd root //置一个新的 root 帐号密码。Enter new UNIX password:Retype new UNIX password:passwd: password

2021-12-10 08:51:37 941

原创 git相关操作

git是什么Git是一个分布式的版本控制系统,与集中式的版本控制系统SVN不同的是,每个人都工作在通过克隆建立的本地版本库中。也就是说每个人都拥有一个完整的版本库,查看提交日志、提交、创建里程碑和分支、合并分支、回退等所有操作都直接在本地完成而不需要网络连接。工作区(working diretory)用于修改文件 。缓存区(stage) 是用来暂时存放工作区中修改的内容,Index为索引,即暂存区。。提交历史(commit history) 提交代码的历史记录。git仓库文件的4种状.

2021-12-09 13:57:54 545

原创 BES SDK环境搭建与固件烧录

hickory项目环境搭建与固件烧录搭建编译环境安装虚拟机后需要安装最新的GCC版本(压缩包gcc-arm-none-eabi-1010),否则编译工程会报错。在服务器10.10.204.27\个人目录\ticy下可找到相关软件安装包。编译软件生成固件版本使用命令make来编译工程,如果更新了算法库需要先使用命令make clean清除之前的编译版本,再使用命令make来重新编译生成新的固件。编译生成的最新固件best2300p_ibrt_anc.bin在目录rainbow_hearin

2021-12-09 10:14:32 1689 1

原创 BES音乐与通话相关接口函数

音乐控制:通过a2dp_handleKey()接口来实现,可以设置的控制参数如下,#define AVRCP_KEY_NULL 0#define AVRCP_KEY_STOP 1#define AVRCP_KEY_PLAY 2#define AVRCP_KEY_PAUSE 3#define AVRCP_KEY_FORWARD .

2021-12-08 16:06:15 607

原创 BES 软件定时器应用

当事件A发生某段时间后再继续执行事件A,而这段时间需要去处理B事件,就可以使用定时器。如果这段时间不需要处理其他事件,可以直接使用延时函数。软件定时器应用主要包括四个步骤:创建定时器,配置定时器ID,指定定时类型(周期性/一次性); 开启定时任务,指定定时时长,定时器ID; 定时器处理函数,关联定时器ID,定义当定时时长达到后需要执行哪些操作; 关闭定时任务。#ifndef SW_TIMER#define SW_TIMER#endif#ifdef SW_TIMER v...

2021-12-08 16:00:07 894

原创 蓝牙助听器

什么是蓝牙助听器,工作原理是什么?蓝牙助听器是指带有蓝牙功能的助听器。蓝牙技术是一种短距离无线传输技术,通过蓝牙可以在电脑、手机、耳机等数码产品中进行无线传输,方便了数据的传输。助听器是一个小型扩音器,把原本听不到的声音加以扩大,再利用听障者的残余听力,使声音能送到大脑听觉中枢,而感觉到声音。助听器有哪些类型?助听器按传导方式分为气导助听器和骨导助听器; 按使用方式分类为盒式...

2020-02-05 15:40:27 3331 1

国际会议演讲

国际学术会议交流常用表达方式,及注意事项,关注要点,为会议发言做充分的准备。

2015-10-01

空空如也

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

TA关注的人

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