Matrix

CarlyleLiu‘s Blog

安装 hexo

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

安装依赖

1
2
3
4
5
6
7
8
9
10
11
# 使用 pandoc 渲染器
npm un hexo-renderer-marked
npm i hexo-renderer-pandoc

npm un hexo-renderer-pandoc
npm i hexo-renderer-markdown-it-plus

npm install hexo-deployer-git
sudo apt-get install pandoc

npm install prism

卸载 hexo 默认 markdown 渲染器,安装 pandoc markdown 渲染器。hexo 默认的 markdown 渲染器不支持 Mathjax,不支持插件扩展,不支持 emoji 表情。pandoc markdown 渲染器支持 Mathjax 语法,不仅可以渲染 markdown,还支持 textile,reStructedText 和许多其他格式,仍然不支持 emoji 表情。

此外还有其他 markdown 渲染器,hexo-renderer-markdown-it 支持 Mathjax 语法(支持不太好),支持 Markdown 以及 CommonMark 语法,渲染速度比 hexo-renderer-marked 快,支持插件配置,支持标题带安全的 id 信息,支持脚注(上标,下标,下划线)。 hexo-renderer-markdown-it-plus 支持 Katex 插件并默认启用,默认启用插件列表:markdown-it-emoji,markdown-it-sub,markdown-it-sup,markdown-it-deflist,markdown-it-abbr,markdown-it-footnote,markdown-it-ins,markdown-it-mark,@iktakahiro/markdown-it-katex,markdown-it-toc-and-anchor。

这里要吐槽一下各版本的 markdown 渲染器,对 latex 语法的支持真是一言难尽,pandoc 用了一段时间发现某些特性不支持打算换一个,然后 latex 公式各种崩,😔毁灭吧。

阅读全文 »

MySql

拉取镜像:mysql:latest 端口设置:

环境:MYSQL_ROOT_PASSWORD = passwd

创建用户和 database

1
2
3
4
5
6
7
8
9
10
11
12
DROP USER 'wordpressuser'@'localhost';

# 为 wordpress 创建数据库
use mysql;
select user,host from user;

CREATE USER 'wordpressuser'@'%' IDENTIFIED BY 'passwd';
grant all on wordpress.* to 'wordpressuser'@'%';

# 生效
FLUSH PRIVILEGES;
exit;
阅读全文 »

修改UAC配置参数后无法正常通信

如果修改了UAC的配置后出现UAC无法正常通信的问题,可以通过修改设备的idVendor和idProduct来解决,只有设备的idVendor和idProduct发生改变Windows才会重新读取设备的配置描述符。

阅读全文 »

USB sof统计方法

打时间戳方式

  1. ktime_get_raw_ns() Linux标准接口。
  2. meson_timestamp() Amlogic实现的硬件定时器接口。

sof打时间戳的时机

  1. 直接在SOF中断handle里打时间戳,然后将其保存到一个fifo里。
  2. 通过一个hrtimer,主动查询SOF中断寄存器查看是否有SOF包,如果有SOF包则打上时间戳保存到fifo里。

sof时间戳导出到应用层

通过seq file创建一个proc(/proc/sof_ts)文件,应用通过读取该文件来获取sof时间戳。

阅读全文 »

😊 There are two types of DMA mappings

Consistent DM(硬件保证 cache 一致性) mappings which are usually mapped at driver initialization, unmapped at the end and for which the hardware should guarantee that the device and the CPU can access the data in parallel and will see updates made by each other without any explicit software flushing.

Streaming DMA(需要软件来维护 cache 一致性) mappings which are usually mapped for one DMA transfer, unmapped right after it (unless you use dma_sync_* below) and for which hardware can optimize for sequential accesses.

阅读全文 »

Memory Mapped IO

Getting Access to the Device

This address should not be used directly. Instead, to get an address suitable for passing to the accessor functions described below, you should call ioremap(). An address suitable for accessing the device will be returned to you.

After you've finished using the device (say, in your module's exit routine), call iounmap() in order to return the address space to the kernel. Most architectures allocate new address space each time you call ioremap(), and they can run out unless you call iounmap().

阅读全文 »

同步问题原因

USB Isochronous 传输(协议无问题)

Isochronous Transfer 同步问题

电脑播放器播放音乐时:是按一个固定的速率,比如 44.1KHZ,电脑内有一个晶振,可分频出一个 44.1KHZ,进行音乐播放,发给 USB 的数据流速率固定。USB 声卡自己得有一个晶振才能工作,它也可分频出一个 44.1KHZ,供给 I2S 信号或 DAC。

问题来了,晶振是有误差的,这两个 44.1KHZ 不可能完全一模一样,电脑可能是 44.100KHZ,USB 声卡可能是 44.098KHZ,误差约 50ppm,很正常的情况。虽然声卡晶振分频出来是 44.098KHZ,但声卡认为它就是工作在 44.100KHZ 下。好吧,如果二者时钟独立运行,那么 1 个小时会误差 0.2 秒,会出现不同步! 即电脑播了 1 个小时的数据,USB 声卡实际是无法播完的,要多 0.2 秒才能播完。 如果声卡也要 1 小时播完,那这 1 小时就需要丢掉 0.2 秒的数据。

所以二者的时钟必须要同步一致才行,这就是 UAC 同步问题的原因,因此 USB 音频规定了一是采用“等时传输模式”,二是设备需要指定为 3 种同步方式之一:同步(synchronous),适应(adaptive),异步(asynchronous)。

阅读全文 »

音量基本概念

声学中的分贝

因为人耳的特性,我们对声音的大小感知呈对数关系。所以我们通常用分贝描述声音大小,分贝(decibel)是量度两个相同单位之数量比例的单位,主要用于度量声音强度,常用 dB 表示。声学中,声音的强度定义为声压。计算分贝值时采用 20 微帕斯卡为参考值(通常被认为是人类的最少听觉响应值,大约是 3 米以外飞行的蚊子声音)。这一参考值是人类对声音能够感知的 阈值 下限。声压是场量,因此使用声压计算分贝时使用下述版本的公式:

\[ L_p = 20log_{10}(\frac{p_{rms}}{p_{ref}})dB \]

其中的 pref 是标准参考声压值 20 微帕。

分贝声音变化范围

在编程中,我们可以用以下公式计算两个声音之间的动态范围,单位为分贝:

\[ dB = 20 * log(A1 / A2) \]

其中 A1 和 A2 是两个声音的振幅,在程序中表示每个声音样本的大小。声音采样大小(也就是量化深度)为 1bit 时,动态范围为 0,因为只可能有一个振幅。采样大小为 8bit 也就是一个字节时,最大振幅是最小振幅的 256 倍。因此,动态范围是 48 分贝,计算公式如下:

\[ dB = 20 * log(256) \]

48 分贝的动态范围大约是一个安静房间和一台运行着电动割草机之间的区别。如果将声音采样大小增加一倍到 16bit,产生的动态范围则为 96 分贝,计算公式如下:

\[ dB = 20 * log(65536) \]

这非常接近听力最低阈值和产生痛感之间的区别,这个范围被认为非常适合还原音乐。

音量滑块与声音增幅大小线性变化

阅读全文 »

HID 相关概念

报表描述符由描述 HID 设备的数据项目(Item)组成,Item 的第一个字节(项目前缀)由三部分构成,即项目类型(item type)、项目标签(item tag)和项目长度(item size)。

HID 的项目有短项目和长项目两种,其中短项目的格式如下图:

阅读全文 »
0%