最近在项目中使用TTS
串口的SYN6288
语音合成模块来输出中文语音,遇到一些问题,尤其是协议中的校验和计算的问题,折腾了好长时间。
分类: 网络&硬件
Implementing Fast Fourier Transform Algorithms of Real-Valued Sequences With the TMS320 DSP Platform
TI芯片上FFT转换计算相关。
Implementing Fast Fourier Transform Algorithms of Real-Valued Sequences With the TMS320 DSP Platform
巩固理解I2C协议(MCU,经验)
1.Abstract
前些天借用他人的一块MCS-51开发板来做实验,不想这块板子与我刚开始接触MCS-51的板子一样,实在是太亲切了!现在回过来看这块板子,功能算不上是太强大,麻雀虽小五脏俱全,该有的功能都有。于是又忍不住捣腾这块板子,倒不是写小程序一块,看着电路图,到处连线测试一下功能,从中体会下最初的学习兴奋感觉。
最初板子里边最难学会的有两处,一处是由I2C上挂上的一些器件,另外一处是基于DS18B20的一线传输协议,当初花了好大气力去学习,仍旧一头雾水的情景仍记忆犹新。现在回过来看,觉得当时最大的问题是不注重对时序的分析,不能完全理解总线传输协议,毕竟理解是随着时间的增加而逐步深刻的。看到这两大部分,虽然是几个小小的芯片,但心底有不少的辛酸感。现在的理解也不能算完全,我想尽可能的用现在的所学将这两大部分分别写下来,权当是一个巩固学习的过程。
铁电存储器FRAM
铁电存储器FRAM
CC13x0, CC26x0 SimpleLink ™ Wireless MCU Technical Reference Manual
CC13x0, CC26x0 SimpleLink ™ Wireless MCU Technical Reference Manual
继续阅读CC13x0, CC26x0 SimpleLink ™ Wireless MCU Technical Reference Manual
MPU6500寄存器相关信息
1. First read the Register 117. Register 117 – Who Am I Reset value: 0x70 2. Reset mpu6500 0x6B,0x80,//Reset the internal registers and restores the default settings. 0x68,0x03,//Auto selects the best available clock source – PLL if ready, else use the Internal oscillator(20M) 0x6a,0x01,//Reset all gyro digital signal path, accel digital signal path, and temp digital signal path. This bit also clears all the sensor registers. 0x68,0x00,//Internal 20MHz oscillator 0x6a,0x00 3.Config mpu6500 Register 25 – Sample Rate Divider (default 1khz) SAMPLE_RATE = INTERNAL_SAMPLE_RATE / (1 + SMPLRT_DIV) where INTERNAL_SAMPLE_RATE = 1kHz Register 26 – Configuration //!! Disables the FSYNC pin data to be sampled. Register 27 – Gyroscope Configuration Gyro Full Scale Select: 0x00:250,0x08:500,0x10:1000;0x18:2000 Register 28 – Accelerometer Configuration Acc Full Scale select: 0x00:2g,0x08:4g,0x10:8g;0x18:16G Register 29 – Accelerometer Configuration 2 (0x08, Acc Rate = 4KHz) Register 106 – User Control (0x10, SPI mode only. ,也可以使用IIC) Register 108 – Power Management 2 0x00(All sensor on:acc;xyz,gyro:xyz) 最好写入寄存器的值读出来看对不对。 4. 读取加速度和陀螺仪数据 Registers 59 to 64 – Accelerometer Measurements 59:acc_xout_h; 60:acc_xout_l 高位在前 61:acc_yout_h; 62:acc_yout_l 63:acc_zout_h; 64:acc_zout_l Registers 65 and 66 – Temperature Measurement 65:temp_out_h; 66:temp_out_l Registers 67 to 72 – Gyroscope Measurements 67:gyro_xout_h; 60:gyro_xout_l 高位在前 61:gyro_yout_h; 62:gyro_yout_l 63:gyro_zout_h; 64:gyro_zout_l //////////////////////////////// 1. 6500时钟选择 An internal relaxation oscillator(20M) or MEMS oscillators。 2. FIFO : 512 字节,通过配置将什么数据写入FIFO(acc data,temp data,gyro data). 3. Interrupts 通过寄存器配置使能和如何触发。INT pin。 4 。Self-Test ,DMP , FactoryCalibration 6. DLPF: 数字低通滤波器(digital low-pass filter); 7. FSYNC:Frame synchronization digital input.Connect to GND if unused. 8. Communication with all registers of the device is performed using either I2C at 400kHz or SPI at 1MHz. 9. 16-bit ADCs: +-32768; 10. Auxiliary master I2C bus for reading data from external sensors (e.g. magnetometer) 11. 20MHz SPI serial interface for reading sensor and interrupt registers --平放acc z轴 为1g(9.8) ; 如果量程是16g,输出在2048左右(32768/16 = 2048) 12. 校准,零漂
详细的寄存器文档如下:
TI Code Composer Studio 7.4查看内存以及闪存的使用情况
最近在使用TI
的CC1310
开发运动感知相关的应用,使用Code Composer Studio 7.4
开发。刚刚上手,需要评估一下代码占用的内存空间,找了半天,找到了查看内存占用的方法,如下:
华硕B150M-ET/V5主板USB 3.0故障
最近公司的一台使用华硕B150M-ET/V5
主板的机器,在插拔USB
设备的时候,一定概率会出现总线故障,导致全部的USB
设备丢失,此时跟内核死机没有太大的区别,全部的鼠标键盘都不能使用了。通过SSH
远程登录上去,可以看到如下日志:
$ dmsg .......... [193406.749081] xhci_hcd 0000:00:14.0: xHCI host not responding to stop endpoint command. [193406.749098] xhci_hcd 0000:00:14.0: xHCI host controller not responding, assume dead [193406.749120] xhci_hcd 0000:00:14.0: HC died; cleaning up ..........
这个问题初步判断是主板BIOS
的BUG
,解决方法就是升级BIOS
。
目前最新的BIOS
为B150M-ET-ASUS-3606
日期为02/21/2018
发布的版本。
目前官方网站上的页面中没有这个固件的链接地址,用BIOS
自带的在线升级工具可以升级到这个版本。
官方版本的下载地址为:
https://dlsvr04.asus.com/pub/ASUS/mb/LGA1151/B150M-ET/B150M-ET-ASUS-3606.zip
如果官方下载存在问题,可以在本站下载一份拷贝:
B150M-ET-ASUS-3606
参考链接
内存带宽简单介绍
内存,作为影响现代计算机性能至关重要的部件,最重要的指标有两个,分别是容量和带宽,而容量一般都很好理解,比如1G、2G,这也是大多数人对内存的最直观认识。更多关于内存的相关知识介绍,网上有一篇很好的文章“千丝万缕的联系 DDR1-3和GDDR1-5全解析”,所以这里也不打算多讲理论,还是来点更工程性的东西,或者说更实际点的。
以“KVR1333D3N9/2G”为例,这就包含有几个信息:产商为金士顿(KVR)、等效频率为1333MHz、传输类型为DDR3(D3)、容量2G。SDR内存和DDR内存的数据总线位宽都为64bit,所以等效频率为1333的内存带宽为1333MHz*64bit/8=10.664GB/s(注意:这里的G等于1000*1000*1000,而非1024*1024*1024)。这个公式应该很好理解:也就是一次传输64bit,一秒传输1333M次,所以一秒的总传输量(也就是带宽)就等于1333M*64。
对于双通道或三通道,可以简单的类比理解为,以前单通道是一根管子(内存控制器)放水,而双通道或三通道是两根或三根管子放水,所以放水量(内存带宽)成倍增长,当然这需要机器(以前是需要主板支持,更具体点是北桥芯片,但在Nehalem架构集成内存控制器后,就需要CPU来支持)对双通道或三通道的支持(即主板或cpu有两个或三个内存控制器,并且各个内存控制器相互独立工作),那么相应的,系统总内存带宽就能达到10.664GB/s*2=21.328GB/s或10.664GB/s*3=31.992GB/s。
32GB/s是1333内存三通道情况下的理论带宽,而实际带宽还与其它东西相关联,比如Intel Xeon E5504 CPU,虽然支持三通道,但其支持的最高频内存只是DDR3 800,所以即便是在Xeon E5504的机器上安装DDR3 1333的内存也并没有什么益处,因为DDR3 1333会被自动降频到800来使用,所能达到的最大内存带宽也就只有19.2GB/s。
[root@localhost lenky]# cat /proc/cpuinfo | grep "model name" | uniq model name : Intel(R) Xeon(R) CPU E5504 @ 2.00GHz [root@localhost lenky]# dmidecode -t 16 # dmidecode 2.9 SMBIOS 2.6 present. Handle 0x002B, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 192 GB Error Information Handle: Not Provided Number Of Devices: 6 Handle 0x0039, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 192 GB Error Information Handle: Not Provided Number Of Devices: 6
将上面信息对照链接http://www3.intel.com/cd/channel/reseller/asmo-na/eng/products/server/processors/5500/feature/410125.htm中的表格:
Usage | Workloads | Memory Frequency | Max B/W | Recommended # of DIMMs per Channel | Max DIMMs2 | Max Capacity3 |
Maximum bandwidth | HPC | 1333 MHz | 32 GB/s | 1 | 6 | 48GB |
General purpose | Various apps | 1066 MHz | 25.5 GB/s | 2 | 12 | 96GB |
Maximum capacity | Virtualized platforms | 800 MHz | 19.2 GB/s | 2 QRO RDIMM 16GB | 12 | 192GB |
3 SR/DR RDIMM 8GB | 18 | 144GB |
可以看到匹配在800 MHz(Memory Frequency)/12(Max DIMMs)/192GB(Max Capacity)这一行,也即当前内存工作频率为800MHz。另外,对照Xeon E5504 CPU的Intel官方内存规格说明:
Memory Specifications | |
Max Memory Size (dependent on memory type)
|
144 GB |
Memory Types
|
DDR3 800 |
# of Memory Channels
|
3 |
Max Memory Bandwidth
|
19.2 GB/s |
Physical Address Extensions
|
40-bit |
ECC Memory Supported
|
Yes |
虽然最大内存容量标注为144GB,但其括号内已注明这个依赖于内存类型,而且144GB也是800MHz所对应的内存最大容量,所以并没有问题;支持三通道;最大带宽为19.2 GB/s;支持ECC内存校验。
另外的,Linux下可利用如下命令查看内存安插的情况,几个重要字段分别为:Data Width: 64 bits(数据总线位宽)、Size: 1024 MB(插槽上的内存容量为1G)、Speed: 1333 MHz (0.8 ns)(等效频率为1333MHz):
[root@localhost lenky]# dmidecode -t 17 # dmidecode 2.9 SMBIOS 2.6 present. Handle 0x002D, DMI type 17, 28 bytes Memory Device Array Handle: 0x002B Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: No Module Installed Form Factor: DIMM Set: None Locator: DIMM0 Bank Locator: BANK0 Type: Other Type Detail: Other Speed: 1333 MHz (0.8 ns) Manufacturer: Manufacturer00 Serial Number: SerNum00 Asset Tag: AssetTagNum0 Part Number: ModulePartNumber00 Handle 0x0031, DMI type 17, 28 bytes Memory Device Array Handle: 0x002B Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 1024 MB Form Factor: DIMM Set: None Locator: DIMM2 Bank Locator: BANK2 Type: Other Type Detail: Other Speed: 1333 MHz (0.8 ns) Manufacturer: Manufacturer02 Serial Number: 00000000 Asset Tag: AssetTagNum2 Part Number: ...
参考链接
Linksys WRT 1900AC的V1,V2版本配置信息杂记
在淘宝上买了个Linksys WRT 1900AC
是没有外包装的,网上搜了一下,发现存在的V1,V2两个硬件配置版本。
V1的CPU是1.2G带风扇,V2是CPU 1.3G不带风扇,内存V2是512MB ,V1是256MB
详细配置信息如下图:
官方固件下载地址为:
http://www.linksys.com/us/support-article?articleNum=148550
目前最新的官方固件链接:
http://cache-www.belkin.com/support/dl/FW_WRT1900AC_1.1.10.167514_prod.img
本站缓存的Linksys WRT 1900AC V1
最新官方固件地址:
fw_wrt1900ac_1-1-10-167514_prod-img
OpenWRT的相关固件下载地址:
https://wiki.openwrt.org/toh/linksys/wrt1x00ac_series#stable
本站缓存的Linksys WRT 1900AC V1
的OpenWRT的目前版本的快照:
openwrt-15-05-1-mvebu-armada-xp-linksys-mamba-squashfs-factory-img