最短的 IE 版本判断

网上看到的一段很酷的代码,留着备用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// ----------------------------------------------------------
// A short snippet for detecting versions of IE in JavaScript
// without resorting to user-agent sniffing
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
// ie === undefined
// If you're in IE (>=5) then you can determine which version:
// ie === 7; // IE7
// Thus, to detect IE:
// if (ie) {}
// And to detect the version:
// ie === 6 // IE6
// ie > 7 // IE8, IE9 ...
// ie < 9 // Anything less than IE9
// ----------------------------------------------------------
// UPDATE: Now using Live NodeList idea from @jdalton
var ie = (function(){
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '',
all[0]
);
return v > 4 ? v : undef;
}());

[RPi] ARM指令

浙江大学嵌入式系统课程

生成了Thumb指令还是ARM指令,如何通过编译参数改变

编写测试代码arm.c。

1
2
3
4
5
6
7
#include <stdio.h>
int main() {
int a = 0;
a++;
return 0;
}

用如下命令编译,并使用objdump查看。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
gcc -c arm.c
objdump -d arm.o
arm.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <main>:
0: e52db004 push {fp} ; (str fp, [sp, #-4]!)
4: e28db000 add fp, sp, #0
8: e24dd00c sub sp, sp, #12
c: e3a03000 mov r3, #0
10: e50b3008 str r3, [fp, #-8]
14: e51b3008 ldr r3, [fp, #-8]
18: e2833001 add r3, r3, #1
1c: e50b3008 str r3, [fp, #-8]
20: e3a03000 mov r3, #0
24: e1a00003 mov r0, r3
28: e28bd000 add sp, fp, #0
2c: e8bd0800 pop {fp}
30: e12fff1e bx lr

可以看到指令长度都是32位的,说明gcc默认是以arm指令编译的。使用如下命令查找如何以Thumb编译。

Read More

在RaspberryPi上使用Ramdisk

浙江大学嵌入式系统课程

RAM盘是通过使用软件将RAM模拟当做硬盘来使用的一种技术。相对于传统的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度。新版B版的RPi内存达到了512MB,对于Raspbian来说是绰绰有余了。所以可以考虑把一部分RAM模拟成硬盘来加快存取速度。
Raspbian默认已经支持了Ramdisk,我们只需要格式化一个RamDisk,并将其mount到某一个目录上就可以了。

查看所有可用的ramdisk

1
ls -al /dev/ram*

Task_25_01

创建Ramdisk

一般是使用ext2文件系统格式化Ramdisk。而在此之前,即使/dev/目录中有ram*设备文件,他们也是不占空间,必须进行格式化之后才能使用。因为Ramdisk是临时性的,所以没有必要使用带日志的文件系统,所以一般用ext2格式化就可以了。

1
sudo mke2fs /dev/ram0

Read More

搭建RaspberryPi的交叉编译环境

浙江大学嵌入式系统课程

安装交叉编译工具

1
sudo apt-get install gcc-arm-linux-gnueabi

Lab_02_01

编写测试程序hello.c并编译

1
arm-linux-gnueabi-gcc hello.c

Read More

在RaspberryPi上安装Ruby

浙江大学嵌入式系统课程

安装Ruby

1
sudo apt-get install ruby

Task_13_01

安装ri文档查阅工具

1
sudo apt-get install ri

Task_13_02

Read More