- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 ALSA Timer
0. 前言本文主要介绍alsa-timer相关代码的分析内容。1. 介绍官方文档可以参见下面的链接:ALSA Timer官网上对Timer的介绍很简单,我根据自己的使用情况总结如下:Timer被设计为使用声卡内部的定时器,但是也可以被其它定时器驱动,比如内核中的 snd_timer.ko 就是一个基于系统定时器的Timer。Timer使用循环Buffer来存储信息。
2018-01-24 16:32:49
1295
原创 ALSA Configure
0. 前言本文主要介绍alsa-lib配置文件相关代码的分析内容。1. 配置文件的路径在alsa-lib中,函数 snd_config_topdir 用于获取配置文件的路径,有两个方法可以进行配置:使用环境变量 ALSA_CONFIG_DIR 进行配置。在生成configure时,使用 –with-configdir=dir 进行配置。默认的路径为 $prefix/s
2018-01-15 15:03:03
978
原创 Autotools基础使用
0. 前言当前开源项目的标准编译过程已经变成了简单的三部曲:configure/make/make install,使用起来很方便。维护者不在需要考虑不同编译环境的问题,也基本上不需要写太多复杂的Makefile。但是,autotools的工具数量太多,涉及的语言也不少,不可能从头学到尾。本文以一个完整的例子,一步步建立了一个基本可用的模板工程。后续项目可以直接使用该工程,并且可以逐步完善自己的需求
2017-11-28 10:47:07
1292
原创 [004-u-boot-Exynos4412] Clock Management Unit
0. 前言本文以Exynos4412芯片为例,介绍了CMU(Clock Management Unit)。CMU通过控制PLL产生系统时钟,总线时钟和外设时钟。1. 时钟域Exynos4412包含5个时钟域,如图所示:CMU_CPU:提供Cortex-A9 MPCore处理器,L2 cache控制器,and CoreSight(调试器)的时钟。CMU_DMC:提供DRAM内存控制器,安全子系统和
2017-08-24 20:11:53
687
原创 [003-u-boot-Exynos4412] 移植SPL阶段
0. 前言本文以Exynos4412芯片为例,介绍了SPL阶段的软件流程。 具体代码可以参考:uboot code1. SPL介绍SPL(Secondary Program Loader)是uboot第一阶段执行的代码。主要负责初始化CPU Core,系统时钟和DRAM控制器等,并搬移uboot第二阶段的代码到系统内存中运行。SPL一般是由固化在芯片内部的ROM引导的。2. SPL配置项CONF
2017-08-24 19:58:20
990
原创 [002-u-boot-Exynos4412] SDK BL2阶段详解
0. 前言本文以Exynos4412芯片为例,简要介绍了uboot的相关概念,并择重分析了BL2阶段的软件流程。1. uboot简介uboot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。它的作用是进行系统引导(相当于BIOS)。它的目标包含以下两个方面:支持多种嵌入式操作系统。如:Linux、NetBSD、VxWorks等。支持多种嵌入式芯片架构。如:Pow
2017-08-24 19:54:45
1769
1
原创 [Makefile-随笔] ifdef多条件判断
在使用Makefile时,有时需要实现如下的逻辑:ifdef VAR1 || VAR2 || VAR3 或 ifdef VAR1 && VAR2 && VAR3但ifdef只支持单一的变量操作,在网上搜索了一下,有一个非常好的解决方案,总结如下。原文链接||操作ifdef_any_of = $(filter-out undefined,$(foreach v,$(1),$(origin $(v)))
2017-07-28 15:41:59
13615
1
原创 [000-u-boot-Exynos4412] RP4412 IROM Booting
0. 前言本文以Exynos d4412芯片为例,介绍了CPU的启动过程。1. 启动介质Exynos 4412可以选择下列启动介质:General NAND flash memorySD/MMC memory cardeMMC memoryUSB deviceCPU通过读取OM引脚寻找启动介质。软件可以通过OM寄存器获取当前的启动信息。2. 启动顺序由手册“5 Booting Sequen
2017-07-18 16:13:23
1264
原创 gcc warning选项
选项 说明 -Wimplicit-int 警告没有指定类型的声明 -Wimplicit-function-declaration 警告在声明之前就使用的函数 -Wimplicit 同-Wimplicit-int和-Wimplicit-function-declaration -Wpointer-arith 对函数指针或者void *类型的指针进行算术操作时给出警告
2017-02-19 23:32:20
2513
原创 gcc -ffunction-sections -fdata-sections -Wl,–gc-sections 参数详解
背景有时我们的程序会定义一些暂时使用不上的功能和函数,虽然我们不使用这些功能和函数,但它们往往会浪费我们的ROM和RAM的空间。这在使用静态库时,体现的更为严重。有时,我们只使用了静态库仅有的几个功能,但是系统默认会自动把整个静态库全部链接到可执行程序中,造成可执行程序的大小大大增加。参数详解为了解决前面分析的问题,我们引入了标题中的几个参数。GCC链接操作是以section作为最小的处理单元,只要
2017-02-16 01:12:25
16224
原创 [001-Cortex_M3-GCC汇编] 第一个点灯程序
背景使用Cortex-M3已经有一段时间了,大大小小也做过几个项目,可以说对这个系列的片子是有一定的了解。相对于以前的8位单片机来说,其存储空间,外设种类都有较大的提升,这对于产品的应用显得非常便利。最近,因为项目上的原因做了一些汇编工作,个人觉得如果想把Cortex-M3系列的芯片用好,汇编方面的理论知识还是需要学习和补充的,因此就有了写这一系列文档的动力,权当总结一下汇编的基础知识和实用样例。
2017-01-26 12:36:54
2453
原创 交叉编译详解 三 使用脚本自动生成交叉编译链
简介鉴于从零制作交叉编译链的命令异常繁杂,很容易因为某个细节出现错误。因此,我将自己创建交叉编译链的步骤写成了脚本,如果大家自己搭建时出现错误,可以直接使用脚本进行创建,以此来确定是自己的步骤有问题还是环境差异造成的。总共有三个脚本,使用说明和脚本源码见后文:toolchain_mkpj.sh 用于创建编译工程目录toolchain_build.sh 用于编译交叉工具链toolch
2017-01-01 21:57:54
4733
3
原创 [001-u-boot-Exynos4412] make smdk4412_config 命令详解
详解 Exynos4412 开发版的 make smdk4412_config 命令
2016-11-09 14:38:38
1123
原创 Intel HEX文件格式
最近在使用keil编译TI的一款M3芯片,keil编译出来的Hex文件符合Intel HEX格式。在此总结一下Intel HEX文件格式。Intel HEX文件格式的文本由ASCII文本文件构成。每一行包含一条数据记录,由回车符(0D0A)结束。Intel HEX文件通常用于传输存于ROM或EPROM中的程序和数据。每条记录包含5个域按如下格式排列:llaaaatt[dd...]cc每个记录都以冒
2016-11-06 20:39:09
742
原创 [问题-已解决]arm-none-linux-gnueabi-gcc没有那个文件或目录
解决问题 arm-none-linux-gnueabi-gcc:没有哪个文件或目录
2016-10-26 15:40:36
9959
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人