一夜未眠。现在是早上6点10分,来电了,起床。
Archive for 十二月, 2009
一部有关家庭,有关情感,有关死亡,有关生活的片子。
刚刚看完,感觉非常好,于是去豆瓣看了一下打分(看片之前绝不去豆瓣),多数是4星以上。
这是一部温暖的电影。
转载请注明出处:http://ganquan.org,谢谢。本文链接是http://ganquan.org/blog/2009/12/2-6-32-port-to-mini2440/
过程非常简单,麻烦的是如果出问题,就要要一遍又一遍的编译。
先上图:
友善官方的Qtopia系统我早就看烦了,直接启动进入字符界面

下面是移植步骤,
1.www.kernel.org下载内核代码,修改构架和编译器
2.修改时钟频率,mini2440开发板用的是12M晶振,修改arch/arm/mach-s3c2440/mach-smdk2440.c
把下面代码中的16934400改为12000000,如果不改串口会出现乱码
static void __init smdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));
}
3.修改mini2440的lcd配置,有两个地方要修改,第一是修改LCD屏幕的参数,第二是修改fbi
修改LCD屏幕参数,mini2440使用的是3.5寸的屏幕,在arch/arm/mach-s3c2440/mach-smdk2440.c中,写入
- 3.1修改LCD参数结构。
#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 170000#define LCD_RIGHT_MARGIN 25
#define LCD_LEFT_MARGIN 0
#define LCD_HSYNC_LEN 4#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 4
#define LCD_VSYNC_LEN 1修改lcd参数结构为:
static struct s3c2410fb_display mini2440_lcd_cfg __initdata = {
#if !defined (LCD_CON5)
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
#else
.lcdcon5 = LCD_CON5,
#endif.type = S3C2410_LCDCON1_TFT,
.width = LCD_WIDTH,
.height = LCD_HEIGHT,.pixclock = LCD_PIXCLOCK,
.xres = LCD_WIDTH,
.yres = LCD_HEIGHT,
.bpp = 16,
.left_margin = LCD_LEFT_MARGIN + 1,
.right_margin = LCD_RIGHT_MARGIN + 1,
.hsync_len = LCD_HSYNC_LEN + 1,
.upper_margin = LCD_UPPER_MARGIN + 1,
.lower_margin = LCD_LOWER_MARGIN + 1,
.vsync_len = LCD_VSYNC_LEN + 1,
};
- 3.2修改fbi
static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays = &smdk2440_lcd_cfg,
.num_displays = 1,
.default_display = 0,.gpccon = 0xaa955699,
.gpccon_mask = 0xffc003cc,
.gpcup = 0x0000ffff,
.gpcup_mask = 0xffffffff,.gpdcon = 0xaa95aaa1,
.gpdcon_mask = 0xffc0fff0,
.gpdup = 0x0000faff,
.gpdup_mask = 0xffffffff,.lpcsel = 0xf82,
};
4.修改nand分区表,修改arch/arm/plat-s3c24xx/common-smdk.c,这个根据自己的情况来写,照抄是没用滴。
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = “bootloader”,
.size = 0×00060000,
.offset = 0,
},
[1] = {
.name = “kernel”,
.offset = 0×00060000,
.size = 0×00200000,
},
[2] = {
.name = “root”,
.offset = 0×00260000,
.size = 0x3fd80000,
}
};
5.修改machine ID,修改arch/arm/tools/mach-types,填写自己的machine ID
s3c2440 ARCH_S3C2440 S3C2440 1999
6.给内核打yaffs文件系统的补丁。去http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下载GNU tarball,解压后进入yaffs2目录,给内核打补丁
./patch-ker.sh c ~/kernel/linux-2.6.32
补丁打好后,在内核代码目录下的fs目录新增了yaffs2目录和相关配置文件
7.因为2410和2440很多地方是一样的,可以用2410的配置文件为基础来配置内核。在内核代码主目录下执行:
make s3c2410_defconfig
这个命令其实就是把arch/arm/configs/s3c2410_defconfig文件拷贝过来命名为.config,所以也可以自己cp。其实在2.6.31版内核中就已经加入了对mini2440开发板的支持,但是我没有选。
配置内核这里没有什么好说的,按照自己的需求来配置。
注意两个问题:
(1)编译后的镜像大小不要超过分区配额
(2)不要裁剪太狠了,把一些基本支持都去掉了,这样一些设备就用不了啦
开始编译。我的机器配置是Core 2 T5500 1.66G,2.5G 内存,运行Debian Lenny 5.0.3,编译10分钟左右就OK了。
网卡驱动我一直没有移植成功。后面弄好了再写上来。
EOF
三星发布了它的智能机操作系统bada。
bada在韩语里面是海洋(ocean)的意思(来自三星bada官网),莫非三星的野心是要做到海洋一样广阔的市场?
看到新闻之后我就立刻去了bada官网逛了一下。看起来建设得还可以,已经有比较完善的文档了。
简单的了解了一下,bada是这样滴:
bada的UI是三星的下一代触摸UI,根据官网上提供的资料看,和Android相似。还说可以直接把Flash或者WebKit嵌入到app里面,其他什么传感器、地图之类的说的很泛,这些写文档的估计原来都是学政治的。
本截图来自于三星bada官网提供的PDF资料

官网说bada是面向服务的(service-oriented),这是最**忽悠的一点,说了一堆假大空话。
另外,bada是开放和结构化的。概括了说就是一句话:不同的应用之间可以共享数据。又和Android一样。
bada可以选择内核,可选择Linux或者是其他实时操作系统内核(比较雷人,有多少精力来把两种都做强做大?),官网说可以根据硬件来定制、选择内核,我靠,居然想两手抓,看你能不能两手硬。另外,bada开发采用GNU工具链和eclipse。
bada的构架分为四层,如图:
本截图来自bada官网

如果光是看这个构架图来,bada和Android相比,和Maemo相比,都算是最简单的构架了。官方说在Frame层可以导出C++ API,可见bada是可以用C/C++开发的。
假设iPhone、Android、Maemo可以是三分天下,那么bada的加入会改变什么呢?
换一个思维来看,其实已经算是一统了:他们都是Unix-like的内核。iPhone算是bsd,Android和Maemo都是Linux内核的,而且Maemo基本上就是把桌面Linux移植到了手机上,现在又多了一个用Linux内核的bada,可以说在嵌入式领域,在移动设备行业来看,Linux是占了相当大的优势。
剩下的在全球范围(销量,用户)来看算是小众了,静观其变。哦,对了,差点忘记还有一个尴尬的Windows Mobile:拿着冲浪板准备了那么久,结果浪来了却被拍到水底下去了。
我个人情感不喜欢三星手机,对Maemo有很大的希望,对Android不反感。
我要同时设置label和使用STOCK中的icon,其实很简单,只要调用gtk_image_menu_item_set_image( )函数就可以了。
这个函数的原型是
void gtk_image_menu_item_set_image (GtkImageMenuItem *image_menu_item, GtkWidget *image);
这个函数这样调用比较方便:
menu_item = gtk_image_menu_item_new_with_label (“Label you want to add”);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(menu_item), gtk_image_new_from_stock (GTK_STOCK_ID, GTK_ICON_SIZE_MENU));
起先没走对路子,折腾死人。