Leo Cao的专栏

an OSD。君子务本,本立而道生(It is upon the trunk that a gentleman works. When that is firmly set up, the way grows.)

Leo L.Cao
Leo L.Cao的公告
你好,欢迎阅读我的blog。我这里将会有许多文章是描述软件安装和配置的,如果看后发现并不如你所想,请先消消气,因为这类文章的内容是和具体软件的功能密切相关的,由于软件版本的不断更新,这类文章也会逐渐的过时,所以在这类文章中,我一定会首先说明软硬件环境,请一定注意这点。当然,以后我会不定时地更新,同时,如果你看到了错误之处,请一定顺手“评论”一下,这样我就会收到一封电邮,提醒我及时更新相关的内容。最后,感谢阅读我的blog,祝你可以在这里找到想要的东西。Welcome! Enjoy it, and hava a fun!
最近评论
Leo Cao:唉,写这个blog,越来越没精力了。有些朋友把blog当记事本用了,随便写一小段,什么意思,什么情况大概只有自己清楚了。写大篇的文章,真的很累。

我希望"彩色电脑(csdn) blog“可以置顶修改过的以前写的文章。
Leo Cao:以前用过,htags也是包含在global软件包中的,我用过它构建过linux内核源代码的交叉索引,但现在有很多网站都提供了这个内容,而且从最早的版本到现在的版本都有,所以也就不用自己做了。

要是在linux下,我基本上用emacs+gtags+cscope+ecb看代码,但emacs(22版本)启动确实要慢很多。
flowingboy:Hi, lz:

谢谢lz,我已经很久没用SourceInsight了,以前上学的时候在试验室经常用,工作之后由于都是Linux/unix下做操作,用sourceInsight已经很少了

不过sourceInsight的确还是很强大的。只是有的时候会无缘无故的挂掉,而且也有lz说的问题

这里再问一个问题,htags……
openmoko:QQ群:11333029
Leo Cao:好的。不过我没有用过cscope,因为不想给emacs加太多东西。另外,cscope和global得目标各有侧重,两者也可以共用,还可以加上xref,使用emacs重构代码。

说实话,我现在也用S-I查看代码,这毕竟直观,释放双手,集中精力分析代码。但编写代码还是会用emacs。

不过,我也发现S-I对符号的索引是有缺点的,尤其针对一些很特别的代码……
文章分类
收藏
    相册
    文档里用的截图
    标准规范
    ARM Architecture Reference Documentation
    ARM processor core
    Intel® 64 and IA-32 Architecture Software Developer's Manuals
    LiMo technical documents
    OMG Specifications
    程序员的生活
    极客集
    疯狂的程序员
    企业主页
    向大师学习
    Martin Fowler's Blog Cn
    Martin Fowler's personal site
    项目网站
    CMS-drupal
    CMS-xoops
    Debian
    Doxygen - a documentation system for for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#
    Maemo
    OpenEmbedded Document
    OpenMoko Wiki
    openrays
    Scratchbox Document
    uClibc organization
    uClinux cvs access point
    友人
    comcat-Jack Boy
    Jack Shao
    Jet Cheng
    JiaKuan Tian
    Roadown Lin
    刘向富
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 OpenMoko WiKi 导读 收藏

    新一篇: 最近想写的内容 | 旧一篇: 文章的索引

       

        Openmoko项目是首个提供了整体嵌入式linux开发环境解决方案的一个开源项目,最初由台湾大众电脑集团(FIC)发起并提供赞助,发展至今,体现出开源软件特有的生命力,众多的开发人员和厂商纷纷加入。目前由FIC生产的neo1973智能手机已经可以网购。

        Openmoko项目的wiki主页是 http://wiki.openmoko.org/wiki/Main_Page ,其中的内容十分丰富,更新也很快,对openmoko关注的朋友一定要好好阅读其中的内容。由于本文的重点在于对应用程序开发过程的介绍,所以下面只提供几个链接,以便大家查阅:

        标志openmoko项目开始的宣言“Free your phone!”:
        http://lists.openmoko.org/pipermail/announce/2007-January/000000.html

        对openmoko项目的介绍,其中含有图片和录像的链接地址
        http://wiki.openmoko.org/wiki/Introduction

        项目的mail list SVN仓库, irc频道:

    http://wiki.openmoko.org/wiki/Development_resources

    通过下面的地址可以邮购neo1973。不过,有条件的可以让朋友从国外带过回来。有已经购买过的朋友说,需要美元300+运费50美元,还有关税。

    https://direct.openmoko.com/

         随着openmoko项目的不断发展,其软件也日趋成熟,它可以运行在多款智能手机平台上。请参考这里 http://wiki.openmoko.org/wiki/OpenMoko-supported_hardware 。因为对neo1973的支持性最好,所以本文的介绍也是基于这款智能手机的。它主要有三个系统组件:bootloaderlinux kernelroot filesystem

         OpenMoko项目使用OpenEmbedded构建交叉编译环境,不过它开发了一个单独的Makefile文件,使构建过程可以尽量的自动化完成;烧写二进制的系统组件也非常方便,它提供一个主机端dfu-util工具,实现了usb dfu协议,直接使用usb而不是串口com,就可以方便的烧写bootload, kernelroot filesystem;使用Linux内核提供的usb gadget模拟出一个usb network, 在主机端可以通过ssh,方便的联网到手机的系统中,进而就可以把软件更新到手机中;使用ipkg作为软件包管理工具,类似于debian中的dpkg,使用起来更像是apt-get,而且openmoko项目也构建了ipkg软件包仓库,用户可以ssh登录手机后,直接使用ipkg更新系统的各种软件和安装新的软件,更提供了图形化的软件包管理应用程序,更加方便用户管理软件包;提供多种方式的模拟器运行环境,支持qemuxnest+xooxephyr,而且,还支持在windows平台下的模拟运行。

        以上所说的openmoko的种种特点还只是它的一部分,实际上,能在它的环境中做更多的事情,比如,QT已近开发出来了使用Qtopiaroot filesystem,并可以运行使用;mono社区也有人开发出支持Openmokomono软件包。藉由自由开放的优秀特性,更多的改进、移植以及从它生发出来的分支项目都会随着时间的推移而不断出现。

        那么目前,对于多数希望通过openmoko熟悉和掌握嵌入式linux开发环境的朋友来说,入手是要首先解决的问题。

        openmoko环境中做开发,大致分成几种,一是应用程序开发,主要使用openmoko已经开发好的一些软件库,设计用户界面和上层的业务逻辑;二是系统程序开发,包括在pc主机平台上的和智能手机目标平台上的,前者包括交叉编译环境的构建、各种辅助工具的开发;后者包括bootloader的开发, 各种硬件驱动程序和协议栈的开发,linux内核的修改和root filesytem的构建;三是硬件的开发,这一方面就不详述了。

        针对不同的方向,需要构建的开发环境也不同。如果做Openmoko应用程序的开发,就无需构建完整的openmoko开发环境,只要使用openmoko已经编译好的toolchain开发包就可以了。而如果需要修改openmoko的结构,就需要构建完整的openmoko开发环境,这是相当费时费力的。

         而对于一般用户来说,紧紧需要使用dfu-util把三个二进制映像文件,即bootloaderu-boot.bin, linux kerneluImage.bin)和root filesystemrootfs.jffs2),烧写到智能手机硬件中,如neo1973,就可以了。这里需要注意的是, bootloader是可选的,而且要注意,如果刷新失败会导致手机无法启动的,所以,一般只要刷新linux kernelroot filesystem就行了。现在,不仅有openmoko官方提供的,也有第三方组织,也即一些爱好者自己制作的。参考链接:
        http://wiki.openmoko.org/wiki/Flashing_openmoko
    这是总体的说明,如何连接手机和pc和使用dfu-util的方法。

        首先要获取dfu-util工具,在这里可以找到:

        http://buildhost.openmoko.org/snapshots/2007.11/images/neo1973/

        这里自然还有其它三个映像文件可以下载。还有更多的选择:

        http://wiki.openmoko.org/wiki/Repositories 这里有官方和第三方提供的二进制映像文件的链接地址。

     Linux kernelroot filesystem的映像文件更新很快,后者的更新相对更快些,因为主要功能都是由它提供的,所以这个映像文件可以多获取几个不同的版本,都试一试。

         而对于开发人员来说,还是先从openmoko的整体架构入手。请参考链接:

        http://wiki.openmoko.org/wiki/OpenMoko

        http://wiki.openmoko.org/wiki/OpenMokoFramework

        在大致了解了OpenMoko的结构后,可以先从应用程序的开发开始,这不需要构建完整的开发环境。首先从下面链接中获取已经编译好的toolchain   其中提供了i386x86_64平台的两个软件包,择需使用。

        http://downloads.openmoko.org/toolchains/

        至于pc主机端的开发环境,我们可以用debian, ubunturedhatSuSEGentoo等,重要的是openmoko所需要的各个软件包是否齐备,debianubuntu是首选的平台。

        如何使用,以及编写实例,参考这里:

        http://wiki.openmoko.org/wiki/Toolchain

        http://wiki.openmoko.org/wiki/Building_a_hello_world_application

       其中的内容介绍的是比较完备的了。对于已经有了一些在桌面linux上,使用了Gtk库编写过图形化应用程序的朋友来说,应该是能较容易入手的。额外说一点,这个toolchain中没有包含libglade相关的开发库,写过gtk应用程序的朋友知道,这对构建界面来说,会有些麻烦,因为要额外写很多组织界面布局的代码。

       随手编写一些小的图形化的测试程序比较简单,而要开发出符合openmoko界面特色的应用程序,需要使用openmoko开发的一些库和了解openmoko整体的界面风格,这是一些需要遵守的规范了。链接在这里:

        http://wiki.openmoko.org/wiki/GUI_Style_Guidelines

        http://wiki.openmoko.org/wiki/OpenMokoFramework

        到现在,我们挺容易就可以在pc上运用交叉编译工具,编译好可以运行在openmoko环境中的实例,对于手上已经有了neo1973手机的人来说,测试过程相当简单,通过在pc主机环境中配制好usb network,就可以在联机后轻松通过ssh的方式,把已经编译好的软件拷贝到手机中运行了。Usb network的建立,这需要两个linux内核提供的模块cdc_ethercdc_acm,详细的参考这里:

     http://wiki.openmoko.org/wiki/Getting_Started_with_your_Neo1973#Getting_shell_access_on_the_phone

       http://wiki.openmoko.org/wiki/USB_Networking

       那对于多数手上没有手机硬件的朋友,就只好建立模拟运行环境了。这需要构建openmoko的整体环境,必须首先说明的是,这项工作非常依赖网络,耗时,而且在构建过程中会出现的一些错误。不过,我们做技术的,多少都爱啃硬骨头,对吧。

    对于建立一个模拟运行的环境,openmoko提供了很多的方式,可以参考这里:

        http://wiki.openmoko.org/wiki/Running_OpenMoko_on_PC

        http://wiki.openmoko.org/wiki/How_to_run_OpenMoko_Apps_on_PC

        而对于openmoko整体开发环境的构建,现在openmoko已经使用了新的2007.2分支,大家在看的时候要注意区别那些针对2007.1的文章,基本上那些已经过时了,不用再看。参考这里:

        http://wiki.openmoko.org/wiki/OpenMoko2007.2

        http://wiki.openmoko.org/wiki/MokoMakefile

        http://www.openembedded.org/wiki/GettingStarted

        这里的构建过程,需要仔细阅读上面的几个链接。因为openmoko使用openembedded,所以可以先单独尝试一下使用openembedded构建交叉编译环境,然后再用到openmoko上面。解决构建过程中的错误,其实是件很有意思的活动,也有利于对openmoko整体结构的理解。

        另外,在调试方面,尤其是通话上,也可以在控制台中使用GSMGPRS, 使用AT命令:

    http://wiki.openmoko.org/wiki/Hardware:AT_Commands

    http://wiki.openmoko.org/wiki/Manually_using_GSM

            http://wiki.openmoko.org/wiki/Manually_using_GPRS

    发表于 @ 2007年12月18日 09:40:00|评论(loading...)|编辑

    新一篇: 最近想写的内容 | 旧一篇: 文章的索引

    评论

    #fmddlmyy 发表于2008-01-27 23:01:56  IP: 218.2.103.*
    OpenMoko采用的openembedded编译系统比较复杂。感觉做了不少无用功。
    有没有不用openembedded而编译openmoko的方法?
    #Leo Cao 发表于2008-01-28 11:57:00  IP: 58.242.207.*
    首先能肯定的是,应该可以改用其它的交叉编译构建工具,比如scratchbox来编译openmoko,这是因为它有开放的性质。这种改动,也可以看成是对openmoko平台的一种定制吧。至于具体的方法和可操作的步骤,就要看有人愿不愿意去研究它了。我最近几个月都没有时间去搞这个。
    #z 发表于2008-02-20 16:33:19  IP: 203.187.169.*
    我买了一个NEO1973 $300.00 运费 $61.00(UPS) 到中国收了我¥150元的关税,7天就运到了北京,但报税什么的用了三天,10天才到我手上
    #jack 发表于2008-03-25 13:06:08  IP: 218.4.143.*
    neo 1973在國內是很難買到的﹐如果還有想買這部手機的朋友﹐可以發郵件聯系我﹐我可以試著幫忙。
    MSN:neusoft_yigp@hotmail.com
    #openmoko 发表于2008-05-15 15:50:01  IP: 219.232.41.*
    QQ群:11333029
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © Leo L.Cao