华为C8817D进入bootloader模式

办理电信宽带送了一个华为手机,但是要登录华为云十五天以上才可以解锁,现在终于可以动手了,却发现无法进入bootloader模式。官方庋坛上说是按“音量下+电源键”可以进入,但尝试多次后无法。可以使用adb工具来进入,手机在待机或者进入recovery模式下,执行以下命令即可。

./adb reboot bootloader

fastboot oem relock 1234567812345678

android使用NFS方式启动

用NFS作为rootfs来启动内核在开发中的必备的,用nfs启动android,也就免去频繁的对nand烧写操作。网上有很多文章,可惜都是互相copy,参考性不强。下面来说明如何用NFS来启动android,具体的操作就不细说了。通常的嵌入式linux使用NFS启动,需要启动NFS的文件系统和相关网络支持,这是第一步,至少内核在最后阶段能mount到FS,而mount之前网络协议也必须是支持的。

1.内核启用NFS文件系统支持,网络里面支持IP_PNP下的BOOTP,DHCP,RARP

2.android内核在最后阶段,是执行RAMDISK中的init进程来remount分区,system和data也是在这个时候才挂载上的。使用NFS启动时,要关闭内核中的ramdisk功能。这样,内核启动后,mount到NFS的目录,然后直接执行NFS目录下的init进程

3.准备android的文件系统。编译aosp代码,最终生成system, data, root目录,分别copy到NFS目录下,配置NFS允许网络访问该目录。在nfsroot目录下,需要修改init.rc文件。里面会对system重新挂载,可以注释掉该内容,修改如下:

#on fs
# mount mtd partitions
# Mount /system rw first to give the filesystem a chance to save a checkpoint
#mount yaffs2 mtd@system /system
#mount yaffs2 mtd@system /system ro remount
#mount yaffs2 mtd@userdata /data nosuid nodev
#mount yaffs2 mtd@cache /cache nosuid nodev

on post-fs
# once everything is setup, no need to modify /
mount rootfs rootfs / rw remount

这里,我关闭也on fs的action操作,记得把on fs也注释掉。

4.内核启动参数

mem=128M console=ttyS0,115200 androidboot.console=ttyS0 root=/dev/nfs nfsroot=192.168.1.200:/srv/sam9x5_androidfs ip=192.168.1.190:192.168.1.200:192.168.1.1:255.255.255.0::eth0:off init=/init rootdelay=5

挂载NFS来说并不难,主要是android使用了ramdisk来启动,结果花了一天半时间才搞定。

Google brillo编译体验

近期Google又又发布了一款新的操作系统,是应用于物联网方向,所以对芯片的要求也降低了不少,由其是RAM和FLASH上,对低端的芯片比较友好了,像工业用的芯片,A8,A9还是属于比较高端了。这两天Google已经开放brillo的代码,至于什么时候能应用到设备还要等一等了,先体验下再说了。还是老调重弹,如果有国外的VPS服务器,直接在VPS下载Google原版的就可以了,我这里还是使用镜像吧,因为brillo是修改自Android的,所以同属aosp代码之下,国内有同步的网站都可以下载到。

1.准备工作

这里推荐使用64位的debian或ubuntu系统,java使用jdk7的版本,提前安装即可。brillo的代码大概需要16GB的空间,所以还是准备个50G以内比较合适。

2.下载brillo代码

mkdir ~/bin curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > ~/bin/repo 
export PATH=$HOME/bin:$PATH 
mkdir brillo-src 
cd brillo-src 
repo init -u https://aosp.tuna.tsinghua.edu.cn/brillo/manifest -b master 
repo sync -c

清华的源还是比较给力,如果是100M网络的话,基本三小时内能下完。

3.编译brillo

source build/envsetup.sh lunch You're building on Linux

Lunch menu... pick a combo:

  1. aosp_arm-eng
  2. aosp_arm64-eng
  3. aosp_mips-eng
  4. aosp_mips64-eng
  5. aosp_x86-eng
  6. aospx8664-eng
  7. brilloemulator_arm64-eng
  8. brilloemulator_arm-eng
  9. brilloemulatorx8664-eng
  10. brilloemulator_x86-eng
  11. edison-eng
  12. miniemulatorarm64-userdebug
  13. mearm-userdebug
  14. miniemulatorx86_64-userdebug
  15. miniemulatorx86-userdebug
  16. brillo_gpios-userdebug
  17. brillo_i2c-userdebug
  18. brillo_leds-userdebug
  19. ledflasher-userdebug

Which would you like? [aosp_arm-eng]9

make -j5

这里我们先编译x86-64版本的就可以了,然后等待完成就可以了,比android快很多了,比竟没有GUI么

4.体验brillo

./out/host/linux-x86/bin/brilloemulator-x86
# ps
USER      PID   PPID  VSIZE  RSS   WCHAN            PC  NAME
root      1     0     3840   1580     ep_poll 0813c895 S /init
root      2     0     0      0       kthreadd 00000000 S kthreadd
root      3     2     0      0     smpboot_th 00000000 S ksoftirqd/0
root      4     2     0      0     worker_thr 00000000 S kworker/0:0
root      5     2     0      0     worker_thr 00000000 S kworker/0:0H
root      6     2     0      0     worker_thr 00000000 S kworker/u2:0
root      7     2     0      0     rcu_gp_kth 00000000 S rcu_sched
root      8     2     0      0     rcu_gp_kth 00000000 S rcu_bh
root      9     2     0      0     smpboot_th 00000000 S migration/0
root      10    2     0      0     rescuer_th 00000000 S khelper
root      11    2     0      0      devtmpfsd 00000000 S kdevtmpfs
root      12    2     0      0     rescuer_th 00000000 S netns
root      13    2     0      0     worker_thr 00000000 S kworker/u2:1
root      14    2     0      0     rescuer_th 00000000 S perf
root      49    2     0      0     rescuer_th 00000000 S writeback
root      51    2     0      0     rescuer_th 00000000 S crypto
root      53    2     0      0     rescuer_th 00000000 S bioset
root      55    2     0      0     rescuer_th 00000000 S kblockd
root      145   2     0      0     rescuer_th 00000000 S ata_sff
root      150   2     0      0     rescuer_th 00000000 S md
root      158   2     0      0     worker_thr 00000000 S kworker/0:1
root      159   2     0      0     rescuer_th 00000000 S cfg80211
root      279   2     0      0     rescuer_th 00000000 S rpciod
root      301   2     0      0         kswapd 00000000 S kswapd0
root      320   2     0      0     fsnotify_m 00000000 S fsnotify_mark
root      327   2     0      0     rescuer_th 00000000 S nfsiod
root      354   2     0      0     rescuer_th 00000000 S acpi_thermal_pm
root      356   2     0      0     worker_thr 00000000 S kworker/u2:2
root      757   2     0      0     scsi_error 00000000 S scsi_eh_0
root      760   2     0      0     rescuer_th 00000000 S scsi_tmf_0
root      761   2     0      0     scsi_error 00000000 S scsi_eh_1
root      763   2     0      0     rescuer_th 00000000 S scsi_tmf_1
root      765   2     0      0     worker_thr 00000000 S kworker/u2:3
root      776   2     0      0     rescuer_th 00000000 S kpsmoused
root      778   2     0      0     worker_thr 00000000 S kworker/0:2
root      787   2     0      0     rescuer_th 00000000 S binder
root      805   2     0      0     rescuer_th 00000000 S ipv6_addrconf
root      819   2     0      0     rescuer_th 00000000 S deferwq
root      821   2     0      0     worker_thr 00000000 S kworker/u2:4
root      887   2     0      0     worker_thr 00000000 S kworker/0:3
root      898   2     0      0     kjournald2 00000000 S jbd2/vda-8
root      899   2     0      0     rescuer_th 00000000 S ext4-rsv-conver
root      901   1     3404   1316  poll_sched 0813c970 S /sbin/ueventd
root      1172  2     0      0     worker_thr 00000000 S kworker/0:1H
root      1173  2     0      0     kjournald2 00000000 S jbd2/vdb-8
root      1174  2     0      0     rescuer_th 00000000 S ext4-rsv-conver
logd      1175  1     11364  2760  sigsuspend b75e0991 S /system/bin/logd
dbus      1179  1     5704   3020  poll_sched b7388770 S /system/bin/dbus-daemon
system    1180  1     4628   2056  binder_thr b75d3676 S /system/bin/servicemanager
shell     1183  1     4480   2300  sigsuspend b759f991 S /system/bin/sh
root      1184  1     3652   676   poll_sched 08112160 S /sbin/adbd
system    1185  1     5352   3144  poll_sched b74df770 S avahi-daemon: running [linux.local]
keystore  1186  1     29000  8688  binder_thr b6fe0676 S /system/bin/keystore
media     1187  1     71668  16896 binder_thr b5f97676 S /system/bin/mediaserver
system    1188  1     28740  8764     ep_poll b7437475 S /system/bin/nativepowerman
root      1189  1     30332  8776  binder_thr b7472676 S /system/bin/sensorservice
system    1190  1     30484  9780  poll_sched b5d737f5 S /system/bin/wpa_supplicant
root      1192  1     4480   2368  poll_sched b75627f5 S /system/bin/sh
system    1193  1     33412  12784    ep_poll b562f475 S /system/bin/metrics_collector
system    1194  1     9984   3788     ep_poll b7114475 S /system/bin/metricsd
root      1195  1     4732   2072  hrtimer_na b75fb8f1 S /system/xbin/perfprofd
root      1196  1     10672  6984     ep_poll b7329475 S /system/bin/shill
tlsdate   1197  1     6204   3288     ep_poll b7376475 S /system/bin/tlsdated
root      1199  1     11804  7588     ep_poll b7339475 S /system/bin/update_engine
system    1200  1     34656  14092    ep_poll b5937475 S /system/bin/weaved
system    1201  1     33352  13000    ep_poll b58bf475 S /system/bin/webservd
root      1206  1197  6204   364    pipe_wait b7377af6 S /system/bin/tlsdated
root      1221  2     0      0     kauditd_th 00000000 S kauditd
system    1247  1     7724   5588     ep_poll b7486475 S /system/bin/firewalld
root      1258  1183  4480   2340  sigsuspend b75f2991 S /system/bin/sh
root      1267  1258  4684   2132           0 b7477af6 R ps

看进程只有一些web,daemon,firewall,不知道后期有没有GUI集成。

cubieboard2下编译ushare

uShare是一款提供dlna服务端的应用程序,可以支持如下格式:

- Video files : asf, avi, dv, divx, wmv, mjpg, mjpeg, mpeg, mpg, mpe,
mp2p, vob, mp2t, m1v, m2v, m4v, m4p, mp4ps, ts, ogm, mkv,
rmvb, mov, qt
- Audio files : aac, ac3, aif, aiff, at3p, au, snd, dts, rmi, mp1, mp2, mp3,
mp4, mpa, ogg, wav, pcm, lpcm, l16, wma, mka, ra, rm, ram
- Images files : bmp, ico, gif, jpeg, jpg, jpe, pcd, png, pnm, ppm,
qti, qtf, qtif, tif, tiff
- Playlist files : pls, m3u, asx

我的cubieboard2上安装的是debian系统,只提供了minidlna,因其不支持mkv, rmvb。所以换到uShare上试,毕竟多一个选择嘛。

uShare的安装只需要两个依赖包,libupnp和libdlna。libupnp可以使用aptitude安装,libdlna需要自己从源码安装。

  1. 安装libdlna

    wget http://libdlna.geexbox.org/releases/libdlna-0.2.4.tar.bz2
    tar xvf libdlna-0.2.4
    ./configure
    sudo make install

  2. 修改libupnp

我直接使用aptitude安装1:1.6.17-1.2的libupnp6后,在编译ushare.c文件出现问题,这里需要修改/usr/include/upnp/upnp.h

vi /usr/include/upnp/upnp.h
//在606行的struct Upnp_Action_Request定义中,有个成员struct sockaddr_storage CtrlPtIPAddr;修改为
struct sockaddr CtrlPtIPAddr;
  1. 编译uShare

首先修改src/ushare.c文件

vi src/ushare.c //修改191行的ip = request->CtrlPtIPAddr.sa_data;修改为
ip = request->CtrlPtIPAddr.addr;

然后就可以编译了

./configure --enable-dlna
make
sudo make install

国内下载android源码

google事情就不多说了,按官文document来操作,连repo都很难顺利下载。国内的朋友可以使用

清华大学的TUNA镜像源。下面简单说下步聚:

  1. 设置同步工具

    git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git
    cp git-repo/repo ~/bin
    chmod a+x ~/bin/repo
    vi ~/bin/repo
    REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'

  2. 下载源码

在使用repo下载前,请先配置好git的username和email

repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-1.6_r2

uboot无法覆盖写入ethaddr变量

uboot中的ping命令需要ethaddr和ipaddr环境变量,ethaddr一般在网卡出厂时就固定了,所以uboot只允许设置一次。可以使用CONFIGENVOVERWRITE定义,启用多次写入的功能。

另外发现,uboot的HUSH是不支持基本的数值计算,写脚本还比较麻烦了。

开源手机的凤凰涅磐之Neo900

Geek们都向彺一款开源的手机,奈何手机作为一款消费产品,工业设计和软件复杂度都比较高。幸好有无数的前辈们不断尝试,Mobilinux, Openmoko, Meego, Tizen, Sailfish。当年的Openmoko辉煌一时,结果性能太弱,跑android都是勉强,现在一群爱好者正直升级它,打算给它新的生命。Neo900,外壳直接采用Nokia N900的,内部PCB参考GTA04的设计,软件借鉴Openmoko的QtMoko, Android等,感觉天时地利都快齐了。

Neo900

最新文章

最近回复

  • Blackrose: 感谢拍砖!嗯,那句话...
  • aa: “Raspberry...
  • Blackrose: 外部只是帮你把芯片启...
  • : 内部时钟比外部的频率...
  • Blackrose: 你这评论比正文更有内容么
  • 7hao: CR+LF ...
  • Blackrose: 可以是你更新软件源后...
  • sxk: 博主,我的系统是ub...
  • Blackrose: 你深得精髓么
  • qihao: 这篇文章的简单总结就...

分类

归档

其它