打包
周末,寝室同学决定去外面改善伙食。老四有事去不了,让我们帮他带份饭菜回来。
我们5人围坐一桌,吃相凶猛,一个菜上来,一顿哄抢,盘子就空了。服务员端上新菜,再把空盘撤下。于是桌子上竟一直只有一个盘子。
最后吃完了,拎着给老四点的菜刚想走,旁边一个刚来吃饭的同学看了我们一眼,说,”真牛,一帮人吃一个菜,还打包……”
Wizzer's Blog
周末,寝室同学决定去外面改善伙食。老四有事去不了,让我们帮他带份饭菜回来。
我们5人围坐一桌,吃相凶猛,一个菜上来,一顿哄抢,盘子就空了。服务员端上新菜,再把空盘撤下。于是桌子上竟一直只有一个盘子。
最后吃完了,拎着给老四点的菜刚想走,旁边一个刚来吃饭的同学看了我们一眼,说,”真牛,一帮人吃一个菜,还打包……”
魅族官方提供了M8的Android内核源码,包含了完整的驱动以及说明,由于MEIZU M8的物理硬件和iPhone一样平时操作的只有1个Home键无法模拟,Android的Back、Menu以及其他因素魅族放弃了M8跑Android的计划。由于M8使用的是Samsung ARM11内核的S3C6410工作频率为667MHz,山寨厂商有一定的借鉴价值。
有关魅族M8的ADB驱动 http://m8-android-kernel.googlecode.com/files/M8_6410_adb_driver.rar
M8的Android编译好固件下载,刷机方法和Wince的一致,下载后直接解压放到USB Storage的根目录 http://code.google.com/p/m8-android-kernel/source/browse/bin/m8_android.rar
M8 for Android源码托管在Google Code上面,使用SVN工具直接提取 浏览地址 http://code.google.com/p/m8-android-kernel/source/browse/#svn/trunk 需要注意的是Android开发网发现有关Modem这块代码没有,涉及到了英飞凌的机密,不过可以看到编译好的库,直接挂上即可。
SVN Checkout地址 http://m8-android-kernel.googlecode.com/svn/trunk
最后是Android123找到的有关M8的移植文章网上整理的word文档,有兴趣的网友可以DIY下,不过Android开发网表示Android和M8原始的Wince比较差距较大,个人还是建议使用完善的WinCE系统,毕竟可以直播RMVB、WinCE对于M8更适合些。
A. 串口改成串口3输出打印信息。
(一) (root=/dev/nfs init=/init nfsroot=192.168.1.10:/nfs ip=192.168.1.100 console=ttySAC2,115200
console=ttySAC2,串口2输出,必须与下面同时修改
(二) System Type —>S3C UART to use for low-level messages—>2
值设成2,即串口2输出,必须与上面同时修改。
B. Onenand驱动支持
(一) Device Drivers —>Memory Technology Device (MTD) support —>OneNAND Device Support —>
[*] Verify OneNAND page writes
<*> OneNAND Flash device via platform device driver
(二) onenand的支持
从贺超提供的linux2.6.27包drivers\mtd\onenand目录复制s3c6410.h,s3c_onenand.c,s3c_onenand.h提供对三星onenand的支持
(三) Makefile修改
drivers\mtd\onenand\Makefile文件最后添加一行:onenand-objs = s3c_onenand.o,编译s3c_onenand.o,连接进内核。
(四) 在arch\arm\mach-s3c6410\mach-smdk6410.c中
static struct platform_device pmem_gpu1_device = {
.name = “android_pmem”,
.id = 1,
.dev = { .platform_data = &pmem_gpu1_pdata },
};
#endif
的后面添加代码:
/*add by liuyihui 2009-08-21*/
/*
*添加onenand驱动支持
*/
/* OneNAND Controller */
/* OneNAND flash controller */
#define S3C64XX_PA_ONENAND (0x70100000)
#define S3C64XX_SZ_ONENAND SZ_1M
static struct resource s3c_onenand_resource[] = {
[0] = {
.start = S3C64XX_PA_ONENAND,
.end = S3C64XX_PA_ONENAND + S3C64XX_SZ_ONENAND – 1,
.flags = IORESOURCE_MEM,
}
};
或者替换新的代码:
arch\arm\plat-s3c64xx\devs.c,
linux/arch/arm/mach-s3c6400/include/mach/map.h
struct platform_device s3c_device_onenand = {
.name = “onenand”,
.id = -1,
.num_resources = ARRAY_SIZE(s3c_onenand_resource),
.resource = s3c_onenand_resource,
.dev.platform_data = &s3c_nand_mtd_part_info
};
/*add end*/
在数组static struct platform_device *smdk6410_devices[] __initdata = {的最后添加:
&s3c_device_onenand /*add by liuyihui 2009-08-21*/
(五) 分区表修改:使userdata从0x0a000000开始
文件linux/arch/arm/plat-s3c/include/plat/partition.h中:
{
.name = “cache”,
.offset = MTDPART_OFS_APPEND,
.size = (67*SZ_1M)+0x1000000,//orig:(67*SZ_1M)/*modified by cefanty 2009-08-21*/
},
(六) 修改drivers\mtd\onenand\generic.c
复制drivers\mtd\onenand\generic.c替换掉。
C. Device Drivers —>Input device support —> [] Keyboards —>
(一) 暂时去掉键盘支持,因为键盘占用了GPK14口,GPK14口在M8是USB供电开关的GPIO,拉高才能用USB
D. Device Drivers —> [*] USB support —> <*> USB Gadget Support —>
(一) <*> USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet supp
(二) Ethernet Gadget (with CDC Ethernet support)
(三) [ ] RNDIS support
(四) d.1)选择Ethernet Gadget (with CDC Ethernet supp,用于把M8模拟成网卡,实现nfs挂载系统。同时去掉RNDIS support支持,因为ubuntu下没有驱动支持。
(五) drivers\usb\gadget\s3c-udc-otg-hs.c修改为USB使用外部晶振
//writel(0x20, S3C_USBOTG_PHYCLK); /*commented by liuyihui 2009-08-24*/
writel(0x00, S3C_USBOTG_PHYCLK); /*00:USB使用外部晶振。modified by liuyihui 2009-08-24*/
A. LCD驱动移植
i. drivers\video\Kconfig,搜索config FB_S3C_LTS222QV,在后面添加如下选项
config FB_S3C_LMS340KC01
bool “LMS340KC01”
—help—
TBA
ii. 添加驱动:drivers\video\samsung\s3cfb_lms340kc01.c
a) 复制刘奕辉开发的s3cfb_lms340kc01.c驱动到目录drivers\video\samsung\
b) 在drivers\video\samsung\Makefile文件最后添加内容:
obj-$(CONFIG_FB_S3C_LMS340KC01) += s3cfb_lms340kc01.o
iii. 修改drivers\video\samsung\s3cfb_fimd4x.c,在函数s3cfb_set_gpio最后注释代码,添加:
#if 0/*commented by liuyihui 2009-08-24*/
/* module reset */
if (gpio_is_valid(S3C64XX_GPN(5))) {
err = gpio_request(S3C64XX_GPN(5), “GPN”);
if (err) {
printk(KERN_ERR “failed to request GPN for ”
“lcd reset control\n”);
return err;
}
gpio_direction_output(S3C64XX_GPN(5), 1);
}
mdelay(100);
gpio_set_value(S3C64XX_GPN(5), 0);
mdelay(10);
gpio_set_value(S3C64XX_GPN(5), 1);
mdelay(10);
gpio_free(S3C64XX_GPF(15));
gpio_free(S3C64XX_GPN(5));
#endif
/*add by liuyihui 2009-08-24*/
/*
*打开M8 LCD需要用到的GPIO口
*/
#if 1 //M8 GPIO set hight
/* module reset *///LCD_nRESET_SHIFT/*4*/
if (gpio_is_valid(S3C64XX_GPQ(4))) {
err = gpio_request(S3C64XX_GPQ(4), “GPQ”);
if (err) {
printk(KERN_ERR “failed to request GPQ for ”
“lcd reset control\n”);
return err;
}
gpio_direction_output(S3C64XX_GPQ(4), 1);
}
mdelay(100);
gpio_free(S3C64XX_GPQ(4));
/* module reset *///LCD_nSS_SHIFT/*5*/
if (gpio_is_valid(S3C64XX_GPQ(5))) {
err = gpio_request(S3C64XX_GPQ(5), “GPQ”);
if (err) {
printk(KERN_ERR “failed to request GPQ for ”
“lcd reset control\n”);
return err;
}
gpio_direction_output(S3C64XX_GPQ(5), 0);
}
mdelay(100);
gpio_free(S3C64XX_GPQ(5));
/* module reset *///LCD_MOSI_SHIFT/*7*/
if (gpio_is_valid(S3C64XX_GPQ(6))) {
err = gpio_request(S3C64XX_GPQ(6), “GPQ”);
if (err) {
printk(KERN_ERR “failed to request GPQ for ”
“lcd reset control\n”);
return err;
}
gpio_direction_output(S3C64XX_GPQ(6), 1);
}
mdelay(100);
gpio_free(S3C64XX_GPQ(6));
/* module reset *///LCD_MOSI_SHIFT/*7*/
if (gpio_is_valid(S3C64XX_GPQ(7))) {
err = gpio_request(S3C64XX_GPQ(7), “GPQ”);
if (err) {
printk(KERN_ERR “failed to request GPQ for ”
“lcd reset control\n”);
return err;
}
gpio_direction_output(S3C64XX_GPQ(7), 1);
}
mdelay(100);
gpio_free(S3C64XX_GPQ(7));
/* module reset *///LCD_CLK_SHIFT/*8*/
if (gpio_is_valid(S3C64XX_GPQ(8))) {
err = gpio_request(S3C64XX_GPQ(8), “GPQ”);
if (err) {
printk(KERN_ERR “failed to request GPQ for ”
“lcd reset control\n”);
return err;
}
gpio_direction_output(S3C64XX_GPQ(8), 1);
}
mdelay(100);
gpio_free(S3C64XX_GPQ(8));
#endif
return 0;
}
/*add end*/
c)
iv. 修改drivers\video\samsung\s3cfb_spi.c,在函数s3cfb_set_gpio最后注释代码,添加:
在代码#elif defined(CONFIG_PLAT_S3C64XX)后面添加:
#define MEIZU_M8
#ifdef MEIZU_M8
#define S3C_FB_SPI_CLK(x) (S3C64XX_GPQ(8 + ( 4)))
#define S3C_FB_SPI_MOSI(x) (S3C64XX_GPQ(7 + (4)))
#define S3C_FB_SPI_CS(x) (S3C64XX_GPQ(6 + (4)))
#else
#define S3C_FB_SPI_CLK(x) (S3C64XX_GPC(1 + (ch * 4)))
#define S3C_FB_SPI_MOSI(x) (S3C64XX_GPC(2 + (ch * 4)))
#define S3C_FB_SPI_CS(x) (S3C64XX_GPC(3 + (ch * 4)))
#endif
B. 触摸屏移植
drivers\input\touchscreen:synaptics510_i2c.c,synaptics510_i2c.h,Makefile,Kconfig
C. 按键移植
覆盖如下文件:目录drivers\input\keyboard\下的:gpio_keys.c
To build busybox
• Download the latest version of busybox from the following website. At the time of writing the latest version was v.1.13.3.
http://www.busybox.net
• Extract the busybox source:
tar jxf busybox-1.13.3.tar.bz2
• Configure busybox by running menuconfig
cd busybox-1.13.3/
make menuconfig
• In menuconfig set the following options
Busybox Settings –> Build Options –> Build Busybox as a static binary (no shared libs) – Enable this option by pressing “Y”
Busybox Settings –> Build Options –> Cross compiler prefix – Set this option equal to “arm-none-linux-gnueabi-”
Busybox Settings –> Installation Options –> Don’t use /usr – Enable this option by pressing “Y”
Linux Module Utilities —> [ ] Simplified modutils 这项不能选,否则insmod 驱动模块加载会提示找不到*.ko驱动文件的路径
• Export path to where the cross-compiler is located on the host, for example:
export PATH=/opt/arm/arm-2007q3/bin:$PATH
• Build busybox
make
Installing Busybox
________________________________________
To install busybox in the target file-system
• Create a /bin directory in the target file-system. For example:
mkdir /<path-to-android-fs>/bin
• Copy the busybox binary to the /bin directory in the target file-system
cp busybox /<path-to-android-fs>/bin
• Install the busybox command line tools on the target by executing the following commands:
cd /bin
./busybox –install
Make the Busybox shell the default shell
________________________________________
To make the busybox shell the default shell, edit the file “init.rc” in the target file-system as follows:
• Edit the console service so that it runs the busybox shell and not the default shell by replacing:
service console /system/bin/sh
With:
service console /bin/sh
• Add the path of the busybox command line tools to the system path variable by replacing:
export PATH /sbin:/system/sbin:/system/bin:/system/xbin
With
export PATH /bin:/sbin:/system/sbin:/system/bin:/system/xbin
cupcake 1.5版需要改写下列文件。
A. 编译mountd,并在文件系统中启动这一服务。
修改 system/core/mountd/Android.mk文件,开放最后一行
# disabled – we are using vold now instead
# include $(BUILD_EXECUTABLE)
为:
# disabled – we are using vold now instead
include $(BUILD_EXECUTABLE)
B. 增加 安装mountd.conf 文件
修改 system/core/rootdir/init.rc文件
释放下两行:
service mountd /system/bin/mountd
socket mountd stream 0660 root mount
C. 修改 system/core/rootdir/Android.mk 文件, 增加 etc/mountd.conf \,如下:
copy_from := \
etc/dbus.conf \
etc/init.goldfish.sh \
etc/mountd.conf \
etc/hosts
D. 修改根文件系统的system\etc \mountd.conf文件:
block_device /dev/block/mmcblk0
抗日战争期间,叶问以双拳捍卫国人的尊严,打死日军军官后,在友人的帮助下,携妻带子,逃离佛山,旅居香港,开始新的生活。
碍于生活艰难,叶问不得不开馆收徒,大弟子黄进得叶问亲传,在与当地武馆的切磋中连战连捷,但却被众武馆的话事人洪师傅教训一番,由此引出一场咏春对洪拳的大战!
thunder://QUFodHRwOi8vczUubWVpenU4LmNvbTo4Mi8yMDEwLzA1L01laXp1OC7Sts7KMqO619rKprSrxuYu1tDOxM7e19bEuy4yMDEwLm1wNFpa
昨天晚上突击了下“人在囧途”。
电影不像是纯喜剧电影,全剧笑料不多(或者我不会笑?),惹我笑的只有两处。而更多的是对社会现实的描写,剧情有强拼硬凑的感觉(包括对话),不过整体还好。★★★☆☆ 我打三星~~
人在囧途迅雷下载地址:thunder://QUFodHRwOi8vczUubWVpenU4LmNvbTo4Mi8yMDEwLzA2L8jL1NrNvi65+tPv1tDX1i4yMDEwLk1laXp1OC5tcDRaWg==
早上闺蜜问我:我给我儿子起名叫子腾,你觉得这个名字咋样?我说很好啊,我喜欢!接着闺蜜继续唠叨着,气死老娘了,年轻时我就想好了将来儿子的名字,偏偏嫁了个姓杜的,害得我这个名字没法用!!!!!
找了个程序员做老公,所以认识了很多程序员。以前就没对程序员有过不好的看法,现在则更不会。发现csdn上老有悲观的论调,说程序员找不到老婆。今天我就以一个程序员妻子的身份,来写写找程序员做老公的好处。希望能给各位mm有借鉴,找程序gg做男朋友。
一、找程序员不用担心外遇。程序员是对着电脑工作,周围同事大部分是男生。他的生活中基本接触不到mm,所以不会有办公室恋情的发生,也就不会有外遇问题发生。而且面对的诱*少,不像销售啊等职位,需要和外人打交道,而且应酬多,所面对的诱*多,外遇出轨问题容易发生。剪剪常常加班到半夜,我是非常放心的,唯一担心的就是他的身体是否吃得消。
二、程序员很老实。在单位,老板让加班就加班。在家里,老婆说啥都听。mm们,有个老实的老公是不是很不错啊。他可能没你想象的那么浪漫,给你惊喜,但他会老老实实记住你说的每句话,按照你的要求去做。
三、程序员很有耐心。这个理由我不多说了,没有耐心的话,怎么写代码。这个在mm当了妈妈会发现是个很好的优点的。我是个没有耐心的人,教小剪学东西他要是学不会,我会没有耐心发脾气的,但是剪剪很有耐心的,会陪他玩,慢慢教会小剪。
四、程序员很细心。写代码是个细活,不细心就会有bug,真写了bug,还得耐心细心的去找出来。在生活中,对于粗枝大叶的mm来说,有个细心的gg照顾不是很好嘛?反正我们家我是粗枝大叶型,剪剪是细心型。
五、程序员很热心。论坛上兄弟们有困难,他们会出手相助。生活中,朋友有电脑问题,他们会帮助解决。我周围的同事好友要是电脑出问题了,都是剪剪帮忙处理的。
六、程序员是IT高手。可能这么说有点夸张,但是身边有个程序员老公,电脑上很多事不用担心的。早到我以前公开教学要做课件,是剪剪帮我做的。到现在家里要弄弄路由器,或者电脑中病毒了重装系统。再到开心网兰蔻粉领丽人评选,剪剪给了技术上的支持。顺带着,“近剪者赤”,看得多了,我也要变成单位里电脑高手了。很多简单问题也能处理了。
七、程序员单纯。不知道是不是所有程序员是这样,反正我家剪是这样,他对别人不会动什么坏心。对外人没坏心,对你也不会有坏心的。曾经碰到个朋友,老公外遇,要离婚,动了很多坏心,在离婚前还把财产都转移了。朋友离婚,钱没有,房子没有,为了这个男人却付出了青春。
八、程序员加班多。可能这是个缺点,但有时也觉得是个优点。他加班多,你可以有个人空间,做做自己喜欢做的事。我同事觉得我比他们自由多了。这得归功于剪剪加班多。他加班多,你可以拿着他卡去shopping。他没时间花钱,你帮他花。而且大部分的程序员都是很大方的,不会说自己太太什么的。
九、程序员可爱。不知道这个是不是和工作性质有关,我认识的程序员们都很老实的,基本没有滑头的。剪剪最老实的事就是,每次工资还没加,就是听到内部风声,就会先告诉我。每次有机会发了现金,其实不告诉我我是不知道的,他也会老交给我。最最可爱老实的一次,是今年公司年会,他中了4000的现金大奖。马上打电话给我。其实他告诉我是两千,我也不知道的。而且晚上回家后,还非要把我摇醒,让我数钱,说是“数钱数到自然醒”。估计那晚是喝多了。
十、程序员有责任心。没有责任心的程序员,写出来的代码都是问题。当然就是因为有了责任心,想给家人过好幸福的日子。才会拼命加班,努力赚钱。我家剪剪如此,我相信所有的程序员们都是这样的。
mm们,选个程序员当老公不会错的。相信我吧!在今后的相处中,你会发现他们越来越多的优点的。
写到这里,后花园的ggdd们拼命在说我这在写他们,其实后花园里的男孩们都不错的。csdn的哪个mm想认识他们,可以回帖。后花园的男孩们,谁想被我在csdn上被写贴推销,可以用可用分来换。根据分数多少,在我帖子里出现的场面多少。
来源:http://topic.csdn.net/u/20091203/20/88dcb738-5925-4ef6-b7f7-a409fb5c9a4e.html?58503
拣了个手机,想了想还给失主,于是在他手机里找了个号码打了过去(是失主的妹妹)对方接通后说:哥,什么事?我说:你是这个手机主人的妹妹吗?你哥手机我拣到了!她听后说:哦,你等一下。然后就把电话给挂了。大约两分钟后。这个电话响了,我一接,就听对方是个女的说:哥,你的电话找到了!”