《系统程序员成长计划》@DouBan:

By 李先静 1,900 views

《系统程序员成长计划》@DouBan: http://book.douban.com/subject/4722708/ 欢迎评论。

categoriaUncategorized commento3 Comments dataApril 7th, 2010
Read All

系统程序员成长计划(china-pub首发)

By 李先静 1,899 views

《系统程序员成长计划》(china-pub首发) http://www.china-pub.com/196523

嵌入式GUI FTK设计与实现-显示设备(FtkDisplay)

By 李先静 536 views

对于GUI来说,输入设备(如键盘和鼠标)和显示设备 (如LCD)都是与硬件相关的。在前面关于《事件源(FtkSource)》的一节中,我们看到了FtkSource很好的抽象了输入设备,让FTK独立于具体的输入设备,从而提高了FTK的可移植性。同样为了提高FTK的可移植性,我们需要对显示设备进行抽象。这里我们引入接口FtkDisplay来抽象显示设备:

categoriaUncategorized commentoNo Comments dataJuly 13th, 2010
Read All

嵌入式GUI FTK设计与实现-事件源(FtkSource)

By 李先静 523 views

在《主循环》一节中, 我们介绍了MainLoop 处理各个事件源的方法,它在事件源上等待事件发生,然后调用事件源的处理函数去处理事件。事件源(FtkSource)是对事件来源的一种抽象,事件的来源可能是一个输入设备(如键盘和触摸屏),可能是一个定时器,也可能是一个网络套接字或管道。总之,只要实现FtkSource要求的接口,就可以让 MainLoop来处理了。

categoriaUncategorized commento1 Comment dataJuly 9th, 2010
Read All

用Android模拟器运行FTK

By 李先静 512 views

用Android模拟器运行FTK

以前写过一篇文章介绍如何在Androidr模拟器上运行FTK(http://www.limodev.cn/blog/archives/1400),那种方法有点别扭,而且要下载Android 的源代码才能编译。最近几个开发板都坏了,所以上周末研究了一下Android模拟器,自己生成文件系统,只是利用Android的模拟器来运行FTK。

Android的模拟器是基于qemu的,个人感觉qemu不好用,除了用Openmoko做的模拟器外,我还没成功用qemu来模拟运行过arm linux。Android在qemu做了不少人性化的工作,用起来比较方便。

0.请参考网上的方法安装Android SDK。

1.生成自己的init程序。

创建几个基本目录。

int init_dirs(void)
{
    umask(0);
    mkdir("/dev", 0755);
    mkdir("/system", 0777);
    mkdir("/dev/block", 0755);
 
    return 0;
}

创建MTD设备的结点。

int init_dev_nodes(void)
{
    int ret = 0;
    ret = mknod("/dev/block/mtdblock0", 0755|S_IFBLK, makedev(31, 0));
    printf("mknod /dev/block/mtdblock0 ret = %d errno=%d\n", ret, errno);
 
    return 0;
}

加载system.img 分区。

int mount_filesystem(void)
{
    int ret = 0;
    ret = mount("/dev/block/mtdblock0", "/system", "yaffs2", 0, NULL);
    printf("mount /dev/block/mtdblock0 ret = %d errno=%d\n", ret, errno);
 
    return 0;
}

运行FTK的桌面。

int startup_desktop(const char* name)
{
    struct stat st = {0};
    int ret = stat(name, &st);
 
    if(ret != 0)
    {
       return -1;
    }
 
    printf("starting the second init: %s.\n", name);
 
    if(fork() == 0)
    {
       ret = execl(name, name);
    }
 
    return ret;
}
 
int switch_root(void)
{
    int ret = chroot("/system");
    ret = startup_desktop("/opt/bin/desktop");
 
    return ret;
}

2.生成ramdisk.img

rm -rf ramdisk
mkdir ramdisk
 
cd init && make; cd - >/dev/null
 
echo "Generating ramdisk..."
 
cd ramdisk && find . | cpio -c -o > ../initrd; cd - >/dev/null
gzip initrd && mv initrd.gz ramdisk.img

3.生成system.img

if [ ! -d rootfs ]
then
    tar xf rootfs.tar.gz
fi

(在这里解压编译好的FTK(ftk-dist.tar.gz)到rootfsrts)

./mkyaffs2image rootfs system.img

4.拷贝生成的ramdisk.img system.img到SDK目录里。

echo "Copying files..."
for f in ramdisk.img system.img
do
    echo "  $f --> $ADNROID_SDK_IMAGES_DIR"
    mv -f $f $ADNROID_SDK_IMAGES_DIR
done

android-ftk
完整源代码和脚本请到这里下载:
svn checkout http://ftke.googlecode.com/svn/trunk/android-ftk-emu android-ftk-emu

categoriaUncategorized commentoNo Comments dataJuly 5th, 2010
Read All

《系统程序员成长计划》示例代码

By 李先静 1,744 views

在googlecode上建立了一个项目:http://code.google.com/p/spexamples/ 用来维护《系统程序员成长计划》示例代码。

无论是示例代码还是书中的BUG,请大家Report到http://code.google.com/p/spexamples/issues/list

《系统程序员成长计划》成长过程

By 李先静 2,206 views

《系统程序员成长计划》的起源应该追溯到六年前了。04年我进入恒基伟业深圳研发部,参与商务通隐形手机开发。在此之前我是做服务器软件开发的,对嵌入式软件开发非常好奇,所以想方设法进入这个行业。恒基伟业在嵌入式方面的实力也是相当高的,很多在消费类设备方面的开发高手都有在恒基伟业工作过的经验。原以为做嵌入式开发的程序员都是非常牛的人,动不动都是能写上上万行汇编语言。真正进入这个行业之后,才知道牛人毕竟是少数,大部分人都和我一样是普通的程序员。

FTK移植指南(初稿)

By 李先静 1,799 views

1.内存分配
要求:实现malloc/realloc/free三个函数,函数原型和标准C一致。或者实现FtkAllocator接口。
参考:ftk_allocator_default.c

2.文件操作
要求:实现FtkMmap接口。libpng和libjpeg还要求实现标准C的FILE(也可以用自己的解码器)。
参考:os/linux/ftk_mmap_linux.c

categoriaFTK(嵌入式GUI) commento7 Comments dataApril 7th, 2010
Read All

FTK-0.4 发布

By 李先静 1,369 views

经过大家一个月的努力,在FTK诞生6个月之际,FTK-0.4如期发布,其主要修改有:

1. 修改了一些BUG。
2. 完整的支持LUA绑定。
3. 完善交叉编译脚本。
4. 增加FTK配置文件。
5. 优化显示速度。
6. 增加缩放动画效果。
7. UCOSII支持(Windows模拟环境)。

特别感谢minpengli,Riwen Huang,zhangalion,tao yu,yapo su, phil song, ZhiHua Huang, hua song, Richard Sharpe和其他参与FTK开发和讨论的朋友们。欢迎大家加入邮件列表讨论。

categoriaFTK(嵌入式GUI) commento6 Comments dataApril 5th, 2010
Read All

爬塘朗山

By 李先静 1,032 views

塘朗山比南山好玩,南山完全是为爬山而爬山,塘朗山还可以看下风景。tls

最近脸色有些苍白。
lxj

老婆还不太像全职师奶。
huan

categoria沉思录 commento7 Comments dataApril 4th, 2010
Read All

嵌入式GUI FTK设计与实现-主循环

By 李先静 1,406 views

带图形用户界面(GUI)的应用程序和传统的批处理程序是不同的:

* 批处理程序是一步一步的执行,直到完成任务为止,完成任务后程序立即退出。
* 图形用户界面应用程序则是事件驱动的,它等待事件发生,然后处理事件,如此循环,直到用户要求退出为止。

categoriaFTK(嵌入式GUI) commento4 Comments dataMarch 28th, 2010
Read All

嵌入式GUI FTK设计与实现-分层视图

By 李先静 884 views

为了从整体上把握FTK的架构,我们先看看FTK的分层视图:

ftk_layer_view

categoriaFTK(嵌入式GUI) commentoNo Comments dataMarch 22nd, 2010
Read All

FTK在ben上运行起来了

By 李先静 896 views

Qi Hardware是由一帮出色的hacker组成的团队,和他们老大Wolfgang Spraul 有过一面之缘,对他们也是很佩服的。呵,帮他们打个广告吧。另外,FTK已经在ben上运行起来了。

categoriaFTK(嵌入式GUI) commentoNo Comments dataMarch 20th, 2010
Read All

关于变量的初始化

By 李先静 1,121 views

做了两年的调试工作后,我对没有初始化的变量引起BUG总是有种恐慌,所以习惯给任何变量都赋上一个初始值。今天一个新同事问到一个问题,int a[100] = {0};是初始化第一个元素还是所有元素?我说是所有的。我们看看下面这个例子:

categoriaProgramming commento6 Comments dataMarch 19th, 2010
Read All

FTK编程风格

By 李先静 774 views

命名规则

名称要表达出对象的意义。

1.文件名

  • 以ftk开头(demo和测试程序除外)。
  • 单词小写。
  • 多个单词用下划线分隔。

示例:

categoriaFTK(嵌入式GUI) commento2 Comments dataMarch 18th, 2010
Read All

0xlab对Broncho A1的评测

By 李先静 1,078 views

0xlab对Broncho A1的评测。原文:http://blog.kanru.info/archives/688

上週末下班前,在桌上發現一個包裹,原來是渡海而來的兩隻 A1!這兩隻 A1 是 Broncho 的產品,詳細規格可以參考 Broncho 的網頁

大伙興奮的開箱啦!

開箱 開箱

包裝和 Hero 的很像。3.2 寸 LCD, 480×320 的解析度,200 萬畫素的相機鏡頭,CPU 是 Marvell 300 (624 MHz),記憶體是 256 + 128 MB,支援 WIFI, Bluetooth, FM, GPS。不是使用標準的 USB 接口,但同一個接口可以接 USB、耳機、變壓器。觸控螢幕使用起來的感覺像是電容式的,反應非常靈敏,輕輕的觸摸就有反應。

系統是 Android Cupcake,內建軟體有不少 Google App,最另人驚訝旳是上面有 Android Market 可以用,試著從 Market 上面下載了一些小遊戲下來玩,完全沒有問題,真是太牛了!另外一點就是有內建手寫輸入,速度不快但是準確度不錯。除此之外還有谷歌拼音可以用。

測試的途中無線網路與 GPS 不是很穩,除此之外以一隻中低價位的手機來說表現的相當不錯。

categoriaAndroid commento1 Comment dataMarch 15th, 2010
Read All

嵌入式GUI FTK设计与实现-三项基本原则

By 李先静 1,051 views

记得X Window在设计初期就提出了七项基本指导原则,在后面X Window几十年的演变过程中,都以这些基本原则作为指导思想。其中给我印象比较深的一条就是:提供机制而不是策略。X Window一直都遵循这条原则,它只提供实现某些功能的机制,而把实现的策略留给ToolKit或其它辅助软件。为了让FTK在以后的演化过程中不至于迷失方向,我们也给FTK定了三项基本原则:

categoriaFTK(嵌入式GUI) commentoNo Comments dataMarch 14th, 2010
Read All

嵌入式GUI FTK设计与实现-目录

By 李先静 1,541 views

总体介绍
    1.FTK的三项基本原则
    2.GUI的几种常见模型
    3.FTK的分层视图

categoriaFTK(嵌入式GUI) commento6 Comments dataMarch 6th, 2010
Read All

FTK google group开通,欢迎加入交流。

By 李先静 910 views

FTK google group开通,欢迎加入交流。

Homepage: https://groups.google.com/group/funnytoolkit
Group email: funnytoolkit@googlegroups.com

如果你不会翻墙,请用gmail发邮件给我。谢谢。

categoriaFTK(嵌入式GUI) commento3 Comments dataFebruary 28th, 2010
Read All

嵌入式GUI ftk-0.3发布

By 李先静 800 views

经过春节长假的努力,FTK-0.3如期发布,其主要修改有:

  • 引入FtkAllocator接口,用于内存使用情况统计分析。
  • 支持非压缩的BMP图像的解码。
  • 支持拼音输入法。
  • 支持五笔输入法。
  • 实现手写输入法框架。
  • 支持长按事件。
  • 修改了编译脚本的一些小问题。
  • 做了其它一些优化和完善。

特别感谢Huang Riwen兄和Feng HuaJun兄,Riwen兄发现并修改了BMP图像解码中的BUG。HuaJun同意我在FTK使用fitx输入法中的词库。

有兴趣的朋友请到FTK下载源代码。

categoriaFTK(嵌入式GUI) commento1 Comment dataFebruary 27th, 2010
Read All

在终端下修改Broncho A1的系统设置

By 李先静 579 views

一位朋友玩Broncho A1的锁屏图案,结果手机被锁住了,输入google ID也不行(在我这里可以)。恢复系统吧,他又不想重装所有软件,于是我研究了一下在命令行修改系统设置的方法。他不是搞技术的,所以我让他把 settings.db改个名或者删除掉,不过那样做有点暴力。这里介绍一种稍微麻烦但更友好一点的方法。

categoriaBroncho-A1-Hack commentoNo Comments dataFebruary 23rd, 2010
Read All

嵌入式GUI FTK支持输入法

By 李先静 573 views

春节期间给FTK增加输入法支持,目前支持拼音输入法,五笔输入法和手写输入法。手写输入法只是实现了框架,识别引擎才开个头,这是今年FTK开发的重点任务。拼音输入法,五笔输入法的基本功能都可以用了吧,易用性方面还需要进一步完善。

categoriaFTK(嵌入式GUI) commentoNo Comments dataFebruary 21st, 2010
Read All

改用gmail了:xianjimli at gmail.com

By 李先静 842 views

hotmail的邮件搜索功能太难用了,逼着我用gmail了:xianjimli at gmail.com

categoriaUncategorized commento2 Comments dataFebruary 20th, 2010
Read All

嵌入式GUI ftk-0.2发布

By 李先静 1,089 views

经过一个月的努力,FTK-0.2如期发布,其主要修改有:

  • 修改了一些BUG,对代码做了一些优化。考虑到RTOS不支持select,所以去掉了main loop对pipe的依赖,提高FTK的可移植性。
  • 移植到Windows平台,加了VS2008 Express Edition的工程文件。
  • 增加了MessageBox和Tips的支持。
  • 增加了弹出菜单的支持。
  • 增加了ComboBox的支持。
  • 增加了窗口从中间向四周扩展的效果。
  • 增加窗口淡入效果。
  • 对话框支持模态和非模态两种。
  • 增加了C++调用的支持。
  • 增加了Cursor的支持,由–enable-cursor命令行参数决定。

有兴趣的朋友请到FTK下载源代码。

附:
A gui library for embedded system. FTK equals funny tool kit, write it just for fun.

ftk

categoriaFTK(嵌入式GUI) commento2 Comments dataJanuary 31st, 2010
Read All

PC通过Android手机(Broncho A1)访问Internet

By 李先静 1,106 views

Broncho A1和普通Android手机一样,不能直接拿来当modem使用,不过可以把它当作一个网关或代理,这样,PC就可以通过A1来访问Internet 了。今天用privoxy(http://www.privoxy.org/)试了一下,工作正常,具体步骤如下:

categoriaAndroid commento5 Comments dataJanuary 25th, 2010
Read All