0%

一、问题

使用xshell 通过 ssh 连接 vm 虚拟机下的 ubuntu12.04,提示服务器拒绝了密码。

二、解决方法

  • 1、尝试修改 vim /etc/ssh/sshd_config 文件的如下内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Authentication:

    LoginGraceTime 120
    PermitRootLogin yes
    StrictModes yes

    ...

    # Change to no to disable tunnelled clear text passwords
    PasswordAuthentication yes
    阅读全文 »

阅读下面的程序,写出输出内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

enum {
ITEM_A = 0,
ITEM_B = 0,

ITEM_C
};

int main(int argc, char const *argv[])
{
printf("%d\n", ITEM_C); //add 1
return 0;
}

原文链接:本人CSDN博客

阅读全文 »

一、前言

关于堆栈的定义在此就不赘述,详细内容可以看这篇博客
堆栈溢出会导致野指针,返回地址错误等问题,通常程序已经无法正常运行,进入 HardFault 异常中断。为了避免这种情况,一般会分配较大的空间用做栈,可是如果仅仅为了安全就分配大空间的栈势必导致内存浪费。本文介绍两种获取栈最大消耗的方法,以方便合理设置栈的大小。

二、方法

1、方法一

栈指针 SP 指向的位置可以反应出当前栈的消耗量。在 STM32 中,栈是向下生长的,如果我们定期的获取栈指针 SP 的值,比较后得到一个最小值,就代表了栈的最大消耗量。而如何才能定期去获取栈指针 SP 的值呢?可以使用定时器产生一个周期性的中断,在中段函数中获取栈指针 SP 的值。最简单的方法就是在系统滴答定时器(SysTick)的中断函数中调用栈分析函数。具体可以参看如下的函数。在程序运行结束后,再去获取最大栈消耗量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static uint32_t max_stack_usage = 0xffffffff;
void stack_parse()
{
int a = 0;

if((uint32_t)&a < max_stack_usage)
{
max_stack_usage = (uint32_t)&a;
}
}

uint32_t get_max_stack_usage()
{
return max_stack_usage;
}
阅读全文 »

一、前言

汇编文件移植性比较差,不同的内核架构支持的指令集都不一样,就算是相同的内核,在不同的 IDE 下的写法也有可能不一样。同样的文件在 KEIL 下可以正常运行,在 IAR 下就无法编译通过,这就是因为 KEIL 和 IAR 对汇编文件的写法要求是不一样的。KEIL 以及 ADS 下的一些伪指令和写法,在 IAR 下是不支持或者不一样的。具体可以参考 《EWARM_ADSMigrationGuide.ENU.pdf》,下文只是我自己在移植过程中的一些修改记录。

二、修改方法

  • 1、修改段和区域的写法
阅读全文 »

在做 leetcode 的第 15 题3Sum 时发现,同样的代码在本地运行的结果是正确的,而在 leetcode 的服务器上结果却是错误的。而且检查了程序中,也并没有使用全局或者静态变量。

这里写图片描述

通过打印,仔细对比两种环境下的输出发现,原来是代码有一条语句指针指向了数组外边的第一个地址。语句的内容是比较当前地址的值是否和后一个地址的值相同, 由于后一个地址实际上已经发生了溢出,在当前地址为数组最后一个元素时,下一个地址就在数组外边了,这个地址的值是不确定的。在本地调试时,由于两个地址的值不同,所以程序结果正确,而在 leetcode 服务器上运行时,这两个值相同,因此程序最终的结果就错误了。

这里写图片描述

阅读全文 »

j-link v9

主控: stm32f205RC

现象

  • 1、给 M0 下载固件的过程中经常出错,提示找不到M0。需要反复尝试很多次才可以下载。
  • 2、在一次正常的拔线断电后,再也无法识别,灯也不亮了。

修复方法一

阅读全文 »

MPEG AUDIO 简介

MP3 是 MPEG Layer3 音频压缩技术的简写,这种技术可在音质极少损伤的情况下获取更好的压缩性能。MP3文件可以被压缩成不同的速率,文件压缩的越小,音质损伤越大。标准的压缩比例为10:1,一段3分钟的音频数据压缩后只需4MB大小。

MPEG 音频压缩算法由联合图像专家组开发,作为高质量数字音频数据压缩的国际标准。MPEG-1 音频压缩算法基于两种机理来减少音频信号码率额,一是利用统计相关性,去除音频信号的冗余,二是利用人耳的心理声学现象如频率掩蔽和时间掩蔽等,去除听觉冗余。分为三个层次,分别是 layer1,layer2,layer3,每个层次针对不同的应用,但是三个层次的基本模型是相同的,每个后继的层都有更高的压缩比,但是需要更加复杂的编解码器。

更新的版本是 MPEG-2,这个版本扩展了MPEG-1的采样率标准,在 MPEG-1 的 32kHz,44.1kHz, 48kHz 的基础上,支持16kHz,22.05kHz,24kHz 采样率。并且MPEG-2还支持多通道。

有一个非官方的标准MPEG-2.5,支持更低的采样率,支持8KHz,11.025kHz 和 12KHz。

阅读全文 »

前导零计数

计算一个 32位 数头部 0 的个数。例如 1 前面有 31 个0, 0 则前面有 32 个0。

C 语言实现

1
2
3
4
5
6
7
8
9
10
11
12
13
int cntLeadingZeros(uint32_t i)
{
int ret = 0;

uint32_t temp = ~i;

while(temp & 0x80000000)
{
temp <<= 1;
ret++;
}
return ret;
}
阅读全文 »