自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux学习资料总结

Linux 音频子系统 | 思学网

2021-10-15 16:20:46 162

原创 linux alsa asoc总结

1. 引入在没有计算机的年代,比如小时候听的收音机,它接收电磁波,将其中调制的声音信号解调出,这个声音信号是经转换后的一种模拟电信号,在经过适当的放大电路放大后,便可以直接送到耳机或者扬声器进行播放。如下是一段声音的波形图,是对声音信号转换成的模拟电信号的形象化展示。其中,横轴表示时间,纵轴表示声音的响度(正比例于电流)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mm7j9Q5V-1632820540464)(audio.assets/image-2021091311

2021-09-28 17:28:48 448

原创 spdif调试总结

spdif调试总结噪音问题播放不同采样率的音频情况:16bit:3200044100480008820096000176400192000正常正常正常正常正常正常正常24bit3200044100480008820096000176400192000正常正常正常噪音正常噪音噪音16bit全部正常,24bit部分会出现噪音情况。排查思路1.首先想到芯片发出的波形是否正确?通过与正常音频发出的波形进行

2021-09-28 17:22:55 1851

原创 linux驱动框架

linux驱动框架1. 总线struct bus_type { const char *name; const char *dev_name; struct device *dev_root; const struct attribute_group **bus_groups; const struct attribute_group **dev_groups; const struct attribute_group **drv_groups; int (*match)(stru

2020-07-27 10:45:38 794 1

原创 详解sd协议以及裸机和u-boot中的sd卡驱动(2)

3. sd卡驱动3.1 引入经过第2章我们知道,要想实现读写sd卡,需要按照sd协议规定的基本传输单位(命令、响应、数据)以及流程(初始化、读、写),向sd卡发送信号或者从sd卡接收信号。为了简化cpu的操作,人们在soc内部设计了一个sd控制器,这个sd控制器专门按照sd规定的协议进行收发信号,并把我们上述提到的基本传输单位命令、响应以及数据的内容简化到一个个寄存器,比如s3c2440内部的sd控制器中包含有:SDICmdArg寄存器:用来保存命令的参数,当我们需要发送命令到sd卡时,对于命令的

2020-07-18 00:01:28 1538

原创 详解sd协议以及裸机和u-boot中的sd卡驱动(1)

1. 引入1.1 使用场景对于sd卡的使用,相信大家都已经很是熟悉:无文件系统首先调用初始化函数,然后便可以调用读写函数进行读写扇区的操作,但是更多的使用场景是在文件系统之上。有文件系统pc端,以windows为例:将sd卡(或通过usb读卡器)插在电脑的插槽里面,然后出现一个sd卡的盘符,点进去便可以访问里面的文件;开发板:将sd卡插在开发板的插槽里面,进入linux根文件系统的shell,执行mount命令挂载在某个目录下,然后进入该目录,便可以访问里面的文件;

2020-07-17 23:57:31 814

原创 站在芯片原厂角度移植最新u-boot 2020.07到jz2440开发板(4)(全部驱动使用设备树与dm设备模型)

8. 编写串口驱动终于开始进行驱动的移植与编写了!提到驱动,在最近几年的u-boot版本中,uboot引入了驱动模型(driver model),那具体是什么呢?各位别急,我们之后的每一个驱动都将使用这种驱动模型进行编写,那现在先看比较简单的串口驱动,从实际的驱动中一步步的了解驱动模型dm。8.1 驱动代码首先在drivers/serial目录下新建一个文件serial_s3c2440.c,全部内容如下:/* SPDX-License-Identifier: GPL-2.0+ *//* * (

2020-07-02 18:44:11 780 1

原创 站在芯片原厂角度移植最新u-boot 2020.07到jz2440开发板(3)(全部驱动使用设备树与dm设备模型)

6. 初步编译终于可以尝试编译了,这里关于交叉编译器的设置就不做介绍了,相信大家应该都会的,只不过需要注意的是高版本的u-boot同样需要高版本的编译器。好的,执行如下命令,指定编译器、cpu架构,开始进行编译,但是,又有问题了,根据上述信息,我们还需要配置CONFIG_SYS_TEXT_BASE,这是u-boot的链接地址,我们编译好u-boot后要把可执行文件复制到内存的这个地址上才行,好,我们在jz2440_defconfig中加上这个配置,CONFIG_ARM=yCONFIG_TARGET

2020-07-02 18:37:46 797

原创 站在芯片原厂角度移植最新u-boot 2020.07到jz2440开发板(2)(全部驱动使用设备树与dm设备模型)

5. 初步配置5.1 引入根据我们上述的分析,arm < arm920t < samsung < s3c2440 < smdk2440是依次后者包含前者的关系,也只有到了最后的开发板级别,我们才能在此基础上面做出具体的项目产品,想一想,我们只有一个arm核、一个soc芯片可以做什么?答案是什么也做不了,因为它不满足一个微型计算机系统构成所必需的各种部件。首先,我们需要明确的是,我们移植的目标是开发板级别,所以我们第一步应该关心的就是board/samsung目录。但是该版本的u

2020-07-02 18:34:15 870 2

原创 站在芯片原厂角度移植最新u-boot 2020.07到jz2440开发板(1)(全部驱动使用设备树与dm设备模型)

1. 概述1.1 缘由最近在待业,由于之前的工作是在一个初创的芯片原厂做底层驱动开发,所以最近想着能不能以一个芯片原厂的角度移植最新的u-boot到jz2440开发板呢?于是便有了这篇文章。整篇文章遵循着以问题为导向的讲解方式,重实践,基本没有原理性的知识,并且从零开始进行移植。我相信,如果你能认真的跟着文章实际操作一把,以后不管遇到什么类型的芯片、什么类型的开发板,同样都能完成从零移植u-boot的工作。1.2 实现的功能移植的u-boot 2020.07目前实现的功能如下:如标题所述,全部

2020-07-02 18:29:58 1043 1

原创 移植micropython到jz2440开发板(samsung s3c2440 soc)记录

移植micropython到jz2440开发板(samsung s3c2440 soc)记录工程全部代码已经上传到了github:https://github.com/Asymptote1994/micropython1. 概述1.1 缘由不知大家有没有了解过K210(一款64位双核带硬件FPU、卷积加速器、FFT、sha256的 RISC-V CPU) 这款AI芯片,如果对嵌入式AI感兴趣的话,非常建议入手。MaixPy —— sipeed公司将 Micropython 移植到 K210的一个项

2020-07-02 18:25:45 763

原创 linux各种情况下,编译器以及链接器查找头文件、库文件的位置

#. 前言1. 无论在编译自己写的代码还是大型开源项目的源码(如mysql、opencv等)时,总会遇到链接器ld报错,提示找不到xxx头文件、库文件;2. 终于历尽千辛万苦编译好了代码,当运行时又会报找不到xxx库文件;以上两种情况是我们程序员在实际工作中经常会遇到的情况,我也是在经历了种种痛苦之后,痛定思痛下决心好好总结一下,下次遇到后起码可以自己尝试着去解决,免得一顿百度之后各种...

2019-04-07 17:38:54 1921

原创 关于对回调函数的理解

一. 提问回调函数的出现解决了什么问题?二. 从简单的示例开始许多人可能会这样理解,回调函数就是函数的开发者和调用者不是一个人,一方负责完成函数,另一方负责调用函数,而且需要使用函数指针。这样的理解没有错,但是我觉得这不是最本质的解释。首先,完成上述的功能,函数指针完全可以不用,直接调用不就好了,如下,/******************由开发者完成************...

2019-03-31 19:56:42 256

原创 ###遇到的各种坑###(Asymptote——站在巨人的肩膀上编写一个属于自己的linux操作系统!)

 这篇文章专门记录一下编写代码过程中遇到的各种问题。(以后改代码切忌一次改的太多,可以改一点在板子上测试一点,成功了再继续进行!!!!!!!!!) 2019.01.05——1. c语言和汇编语言的互相调用,变量的相互引用问题2.  链接脚本中的变量与c语言和汇编语言的互相调用问题3. 代码的下载地址、链接地址、运行地址的区别4. 基于汇编语言,需要重新审视c语言的指...

2019-01-06 22:41:52 382

原创 (1)Asymptote——站在巨人的肩膀上编写一个属于自己的linux操作系统!

一. 前言 最近无意间看到了一本书,《linux内核完全剖析》,竟然是零几年写的,真是深深佩服作者!这本书是基于早期的0.11版内核代码编写的,这也让我有了些许信心去阅读,如果去看2.6的代码,简直不敢想象。。。 之前看过李述桐老师的《从零到一教你写嵌入式操作系统》的tinyOS,那个平台是stm32,当时在原子的开发板上面跟着视频编写并运行过,之后工作了每天都在接触linu...

2019-01-06 20:06:21 1027

原创 生成窗口最大值数组

题目 :有一个整型数组arr和一个大小为w的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。        例如,数组为【4,3,5,4,3,3,6,7】,窗口大小为3时:                窗口数组            最大值          [4  3  5] 4  3  3  6  7        5          4 [3  5

2017-04-28 18:19:24 994 1

原创 一个有getMin功能的栈

前言:这是学习《程序员代码面试指南》一书的第一篇文章,也是博客的第一篇文章,给自己加油,从现在开始坚持记录学习。设计一个有getMin功能的栈题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小值的操作。要求:1.pop、push、getMin操作的时间复杂度都是O(1)。            2.设计的栈类型可以使用现成的栈结构。实

2017-04-15 12:44:46 419

空空如也

空空如也

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

TA关注的人

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