ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2013年8月30日 星期五

FAQ ? build ics 時,出現:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space
用 make showcommands 來看:
out/host/linux-x86/bin/dx -JXms16M -JXmx1536M --dex --output=out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex    --core-library out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes.jar

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space


修改:
diff --git a/core/definitions.mk b/core/definitions.mk
index a562f1f..6f872ba 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1549,7 +1549,7 @@ define transform-classes.jar-to-dex
 @echo "target Dex: $(PRIVATE_MODULE)"
 @mkdir -p $(dir $@)
 $(hide) $(DX) \
-    $(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx1536M) \
+    $(if $(findstring windows,$(HOST_OS)),,-JXms2G -JXmx4G) \
     --dex --output=$@ \
     $(incremental_dex) \
     $(if $(NO_OPTIMIZE_DX), \


ref:

2013年8月27日 星期二

machine_is_XXX( )

kernel code 裡面一堆 machine_is_xxx(),讓程式知道現在是 run 在什麼 機器上。
這麼奇怪的 function 也是用很奇怪的 方式 做出來的。

先是..arch/arm/tools/mach-types
# Database of machine macros and numbers
#
# This file is linux/arch/arm/tools/mach-types
#
# Up to date versions of this file can be obtained from:
#
#   http://www.arm.linux.org.uk/developer/machines/download.php
#
# Please do not send patches to this file; it is automatically generated!
# To add an entry into this database, please see Documentation/arm/README,
# or visit:
#
#   http://www.arm.linux.org.uk/developer/machines/?action=new
#
# Last update: Sun Feb 19 14:16:29 2012
#
# machine_is_xxx        CONFIG_xxxx             MACH_TYPE_xxx           number
#
ebsa110                 ARCH_EBSA110            EBSA110                 0
riscpc                  ARCH_RPC                RISCPC                  1
nexuspci                ARCH_NEXUSPCI           NEXUSPCI                3
ebsa285                 ARCH_EBSA285            EBSA285                 4
netwinder               ARCH_NETWINDER          NETWINDER               5
cats                    ARCH_CATS               CATS                    6
tbox                    ARCH_TBOX               TBOX                    7
co285                   ARCH_CO285              CO285                   8
clps7110                ARCH_CLPS7110           CLPS7110                9
archimedes              ARCH_ARC                ARCHIMEDES              10
a5k                     ARCH_A5K                A5K                     11
etoile                  ARCH_ETOILE             ETOILE                  12
lacie_nas               ARCH_LACIE_NAS          LACIE_NAS               13
clps7500                ARCH_CLPS7500           CLPS7500                14
shark                   ARCH_SHARK              SHARK                   15
brutus                  SA1100_BRUTUS           BRUTUS                  16
personal_server         ARCH_PERSONAL_SERVER    PERSONAL_SERVER         17
itsy                    SA1100_ITSY             ITSY                    18
l7200                   ARCH_L7200              L7200                   19
pleb                    SA1100_PLEB             PLEB                    20
integrator              ARCH_INTEGRATOR         INTEGRATOR              21
h3600                   SA1100_H3600            H3600                   22
..
有一堆 support 的列表..

然後..arch/arm/tools/Makefile
#
# linux/arch/arm/tools/Makefile
#
# Copyright (C) 2001 Russell King
#

include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
        @echo '  Generating $@'
        @mkdir -p $(dir $@)
        $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
叫 AWK script : gen-mach-types來處理 mach-types 這個檔案。
產生 : include/generated/mach-types.h
/*
 * This was automagically generated from arch/arm/tools/mach-types!
 * Do NOT edit
 */

#ifndef __ASM_ARM_MACH_TYPE_H
#define __ASM_ARM_MACH_TYPE_H

#ifndef __ASSEMBLY__
/* The type of machine we're running on */
extern unsigned int __machine_arch_type;
#endif

/* see arch/arm/kernel/arch.c for a description of these */
#define MACH_TYPE_EBSA110              0
#define MACH_TYPE_RISCPC               1
#define MACH_TYPE_NEXUSPCI             3
#define MACH_TYPE_EBSA285              4
#define MACH_TYPE_NETWINDER            5
#define MACH_TYPE_CATS                 6
#define MACH_TYPE_TBOX                 7
#define MACH_TYPE_CO285                8
#define MACH_TYPE_CLPS7110             9
#define MACH_TYPE_ARCHIMEDES           10
#define MACH_TYPE_A5K                  11
#define MACH_TYPE_ETOILE               12
#define MACH_TYPE_LACIE_NAS            13
#define MACH_TYPE_CLPS7500             14
#define MACH_TYPE_SHARK                15
#define MACH_TYPE_BRUTUS               16
#define MACH_TYPE_PERSONAL_SERVER      17
#define MACH_TYPE_ITSY                 18
#define MACH_TYPE_L7200                19
#define MACH_TYPE_PLEB                 20
#define MACH_TYPE_INTEGRATOR           21
#define MACH_TYPE_H3600                22
#define MACH_TYPE_IXP1200              23
.....
#ifdef CONFIG_ARCH_EBSA110
# ifdef machine_arch_type
#  undef machine_arch_type
#  define machine_arch_type     __machine_arch_type
# else
#  define machine_arch_type     MACH_TYPE_EBSA110
# endif
# define machine_is_ebsa110()   (machine_arch_type == MACH_TYPE_EBSA110)
#else
# define machine_is_ebsa110()   (0)
#endif

#ifdef CONFIG_ARCH_RPC
# ifdef machine_arch_type
#  undef machine_arch_type
#  define machine_arch_type     __machine_arch_type
# else
#  define machine_arch_type     MACH_TYPE_RISCPC
# endif
# define machine_is_riscpc()    (machine_arch_type == MACH_TYPE_RISCPC)
#else
# define machine_is_riscpc()    (0)
#endif

#ifdef CONFIG_ARCH_NEXUSPCI
# ifdef machine_arch_type
#  undef machine_arch_type
#  define machine_arch_type     __machine_arch_type
# else
#  define machine_arch_type     MACH_TYPE_NEXUSPCI
# endif
# define machine_is_nexuspci()  (machine_arch_type == MACH_TYPE_NEXUSPCI)
#else
# define machine_is_nexuspci()  (0)
#endif

這樣就產生了所有的 machine_is_xxx()


然後就是 bootloader 傳來 machine_arch_type 這個變數: http://r40eubuntu.blogspot.tw/2013/06/machinearchtype-kernel.html

linux Makefile..

linux 的 Makefile 同時包含說明在裡面..

像..
# kbuild supports saving output files in a separate directory.
# To locate output files in a separate directory two syntaxes are supported.
# In both cases the working directory must be the root of the kernel src.
# 1) O=
# Use "make O=dir/to/store/output/files/"
#
# 2) Set KBUILD_OUTPUT
# Set the environment variable KBUILD_OUTPUT to point to the directory
# where the output files shall be placed.
# export KBUILD_OUTPUT=dir/to/store/output/files/
# make
#
# The O= assignment takes precedence over the KBUILD_OUTPUT environment
# variable.
說明,可以在 build 的時候用 O= 指定輸出位置,
不然就可以宣告環境變數 KBUILD_OUTOUT


cross compiling
設定 ARCH 和 CROSS_COMPILE, Makefile 就會知道..
# Cross compiling and selecting different set of gcc/bin-utils
# ---------------------------------------------------------------------------
#
# When performing cross compilation for other architectures ARCH shall be set
# to the target architecture. (See arch/* for the possibilities).
# ARCH can be set during invocation of make:
# make ARCH=ia64
# Another way is to have ARCH set in the environment.
# The default ARCH is the host where make is executed.

# CROSS_COMPILE specify the prefix used for all executables used
# during compilation. Only gcc and related bin-utils executables
# are prefixed with $(CROSS_COMPILE).
# CROSS_COMPILE can be set on the command line
# make CROSS_COMPILE=ia64-linux-
# Alternatively CROSS_COMPILE can be set in the environment.
# A third alternative is to store a setting in .config so that plain
# "make" in the configured kernel build directory always uses that.
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile


然後下面是 help 的內容..
make help 的輸出..
Cleaning targets:
  clean    - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper   - Remove all generated files + config + various backup files
  distclean   - mrproper + remove editor backup and patch files

Configuration targets:
  config   - Update current config utilising a line-oriented program
  nconfig         - Update current config utilising a ncurses menu based program
  menuconfig   - Update current config utilising a menu based program
  xconfig   - Update current config utilising a QT based front-end
  gconfig   - Update current config utilising a GTK based front-end
  oldconfig   - Update current config utilising a provided .config as base
  localmodconfig  - Update current config disabling modules not loaded
  localyesconfig  - Update current config converting local mods to core
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps
  randconfig   - New config with random answer to all options
  defconfig   - New config with default answer to all options
  allmodconfig   - New config selecting modules when possible
  allyesconfig   - New config where all options are accepted with yes
  allnoconfig   - New config where all options are answered with no

Other generic targets:
  all    - Build all targets marked with [*]
* vmlinux   - Build the bare kernel
* modules   - Build all modules
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)
  firmware_install- Install all firmware to INSTALL_FW_PATH
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)
  dir/            - Build all files in dir and below
  dir/file.[oisS] - Build specified target only
  dir/file.lst    - Build specified mixed source/assembly target only
                    (requires a recent binutils and recent build (System.map))
  dir/file.ko     - Build module including final link
  modules_prepare - Set up for building external modules
  tags/TAGS   - Generate tags file for editors
  cscope   - Generate cscope index
  kernelrelease   - Output the release version string
  kernelversion   - Output the version stored in Makefile
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH
                    (default: /home/charles-chang/cv3k10.3/kernel_imx/usr)

Static analysers
  checkstack      - Generate a list of stack hogs
  namespacecheck  - Name space analysis on compiled kernel
  versioncheck    - Sanity check on version.h usage
  includecheck    - Check for duplicate included header files
  export_report   - List the usages of all exported symbols
  headers_check   - Sanity check on exported headers
  headerdep       - Detect inclusion cycles in headers

Kernel packaging:
  rpm-pkg         - Build both source and binary RPM kernel packages
  binrpm-pkg      - Build only the binary kernel package
  deb-pkg         - Build the kernel as an deb package
  tar-pkg         - Build the kernel as an uncompressed tarball
  targz-pkg       - Build the kernel as a gzip compressed tarball
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball

Documentation targets:
 Linux kernel internal documentation in different formats:
  htmldocs        - HTML
  pdfdocs         - PDF
  psdocs          - Postscript
  xmldocs         - XML DocBook
  mandocs         - man pages
  installmandocs  - install man pages generated by mandocs
  cleandocs       - clean all generated DocBook files

Architecture specific targets (arm):
* zImage        - Compressed kernel image (arch/arm/boot/zImage)
  Image         - Uncompressed kernel image (arch/arm/boot/Image)
* xipImage      - XIP kernel image, if configured (arch/arm/boot/xipImage)
  uImage        - U-Boot wrapped zImage
  bootpImage    - Combined zImage and initial RAM disk
                  (supply initrd image via make variable INITRD=)
  install       - Install uncompressed kernel
  zinstall      - Install compressed kernel
                  Install using (your) ~/bin/installkernel or
                  (distribution) /sbin/installkernel or
                  install to $(INSTALL_PATH) and run lilo

  acs5k_defconfig          - Build for acs5k
  acs5k_tiny_defconfig     - Build for acs5k_tiny
  afeb9260_defconfig       - Build for afeb9260
  am200epdkit_defconfig    - Build for am200epdkit
  am3517_evm_defconfig     - Build for am3517_evm
  ams_delta_defconfig      - Build for ams_delta
  ap4evb_defconfig         - Build for ap4evb
  assabet_defconfig        - Build for assabet
  at572d940hfek_defconfig  - Build for at572d940hfek
  at91cap9adk_defconfig    - Build for at91cap9adk
  at91rm9200dk_defconfig   - Build for at91rm9200dk
....
....
  spitz_defconfig          - Build for spitz
  stamp9g20_defconfig      - Build for stamp9g20
  stmp378x_defconfig       - Build for stmp378x
  stmp37xx_defconfig       - Build for stmp37xx
  sx1_defconfig            - Build for sx1
  tct_hammer_defconfig     - Build for tct_hammer
  trizeps4_defconfig       - Build for trizeps4
  u300_defconfig           - Build for u300
  u8500_defconfig          - Build for u8500
  usb-a9260_defconfig      - Build for usb-a9260
  usb-a9263_defconfig      - Build for usb-a9263
  versatile_defconfig      - Build for versatile
  viper_defconfig          - Build for viper
  xcep_defconfig           - Build for xcep
  yl9200_defconfig         - Build for yl9200
  zeus_defconfig           - Build for zeus

  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build
  make V=2   [targets] 2 => give reason for rebuild of target
  make O=dir [targets] Locate all output files in "dir", including .config
  make C=1   [targets] Check all c source with $CHECK (sparse by default)
  make C=2   [targets] Force check of all c source with $CHECK

Execute "make" or "make all" to build all targets marked with [*] 
For further info see the ./README file

Linux version & name

原來 Linux 的版本寫在 最上面的 Makefile:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 38
EXTRAVERSION = .8
NAME = Flesh-Eating Bats with Fangs
然後這些變數會被用來組成版本字串,
build 的時候會被放在 OUTPUT folder 的 include/config/kernel.release

最後一項是 NAME..
以 3.11 的 NAME 是 Linux for Workgroups

ref: List of Linux kernel names

2013年8月26日 星期一

ST32F4 Discovery

看起來好像是到 這裡 download prebuilt binary.

有 linux, windows 等版本。


ref:

sensation, recovery image & ROMS

sensation recovery 吃的是 PG58IMG.zip
所以到 http://www.clockworkmod.com/rommanager 下載正確的 recovery rom 版本後,
zip , 再rename 成 PG58IMG.zip 就可以放到 sd card...

另外有一個網站把 xda sensation developement 中所有的 ROM 都整理起來:
http://www.htcsensationroms.com/all-builds/

2013年8月22日 星期四

install libmpfr4 in ubuntu lucid (10.04)

因為 build android old rev (before 4.0),要使用 gcc 4.xxx.. 不然要 patch 一堆。
而使用這版本 gcc 的 LTS 只有 lucid..

但是在 build 的時後,需要 libmpc2.. 所以安裝 --> OK.
之後就出現 libmpfr.so.4 找不到。
這個是 package libmpfr4,
可以 lucid 沒有。
找 ubuntu 上 libmpfr4 的最舊版本,是 precise 的,用 dpkg -i 安裝,說要 multiarch 這個 package..
lucid 也沒有,所以不能裝。

最後是用 launchpad port 到 maverick 的 libmpfr4 版本: https://launchpad.net/ubuntu/maverick/amd64/libmpfr4/3.0.0-2

下載安裝 OK

2013年8月13日 星期二

Revolution HD 7.3

因為種種問題,所以想想回到舊版看看。
既然如此,就試試看 一樣是 4.0 的Revolution 好了。
http://forum.xda-developers.com/showthread.php?t=1098849
安裝也是包含 app 了,所以只要裝一次。
也一樣是漂亮的 touch ui,
可以選擇要裝的 app ,調整和 kernel (我選 saba...FM)
裝完開機是 紅色的 Beat 字樣,約等 3min 後開完。
用起來跟原廠的差不多,是好像有比較不頓了
原來instagrame 無法錄影的也好了,
WiFi 好像有問題,常常自動斷線

9/3..奇怪,開 Bt, GPS/Wifi 一陣子後,sd card 常自動退出..

2013年8月12日 星期一

git with https source.. SSL error

最近越來越多 git source 採用 https,

有兩個麻煩的地方:
  • username, password
  • SSL certification
usename, password 就用 ~/.netrc 就可以,
把 machine, login, password 寫進去:
machine my.git.com
login checko
password mygitpassword
.. 對,是明文 ..

site SSL certification fail 就會出現...
Initialized empty Git repository in /xxxx/xxxx/.git/
Password: 
error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none while accessing https://xxxx@xxxx.xxxx/xxxx/xxxx.git/info/refs

fatal: HTTP request failed
這時候就加上這個還就可以:
export GIT_SSL_NO_VERIFY=1


2013年8月8日 星期四

Wheezy -- sun-jdk6

因為 android 2.X 還是只能用 sun-java 6.
所以還是不能用openjdk。

wheezy none-free 已經拿掉 sun-java,
連 debian 網站都說要自己作 (https://wiki.debian.org/Java/Sun)

所以還是 follow 大家的作法,把squeeze 加到 sources.list 中..

ref: http://blog.longwin.com.tw/2013/05/debian-wheezy-sun-java-jdk-2013/

我是加入:
# for sun-java6
deb http://debian.nctu.edu.tw/debian/ squeeze main non-free

然後 aptitude update, 就可以...



其他順便:
build-essential zip curl libncurses5-dev zlib1g-dev tofrodos libglib2.0-dev flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev ccache libgmp3c2 libgmpxx4ldbl libgmp3-dev libmpc2 libmpc-dev libmpfr-dev libmpfr4 g++-multilib lib32z1-dev lib32ncurses5-dev 

2013年8月7日 星期三

2TB HD in Dell N4010 -- booting hang on Bios F2

裝在 eSATA 上,結果開機按F2想進入 bios,姊果卡住。
有一次等了 10min 後,卻顯示沒有 eSATA HD。
但是不進入 BIOS,直接由 internal HD 開機進 Windows 7。卻可以看到 eSATA 上的 HD。

使用 DVD 開機後也可以看到。
所以就安裝了 Wheezy...

但是還是一樣,開機時按 F2 就卡住。

後來找到這一篇: http://en.community.dell.com/support-forums/laptop/f/3519/p/19480181/20247568.aspx

說要把電源和電池拔掉,然後按幾下 Power ,把剩餘的電都耗光。
然後再開機。

這樣作過再開,按下F2果然就可以偵測到 這格 HD 了。

猜 大概是為了快速開機,所以bios 會存 detect 到 HD 資料。
但是做得不夠好,沒有即時 update,所以導致換 HD 後,進 BIOS 都會 hang 住。
所以要把 電源都耗光,讓bios 記憶資料消失。

沒效,後來一直發生 bios 開機卡住

新硬碟,Toshiba 2t

2688,pchome


裝起來用的感想.......好吵XD

而且有時候 bios 會偵測不到、導致開機hang 再 bios setup..

有時候開機進去,會出現sata error,懷疑是外接盒問題。

但是開進去後又OK。

懷疑是

退貨了,,,一直卡作者bios

2013年8月6日 星期二

XXX is not clean, please run 'make mrproper'

奇怪的,每次作menuconfig 後,make 都會出現:
  Using /home/charles-chang/Android/kernel as source for kernel
  /home/charles-chang/Android/kernel is not clean, please run 'make mrproper'
查一下這段 message 是出自於 kernel/Makefile:
# prepare3 is used to check if we are building in a separate output directory,
# and if so do:
# 1) Check that make has not been executed in the kernel src $(srctree)
prepare3: include/config/kernel.release
ifneq ($(KBUILD_SRC),)
        @$(kecho) '  Using $(srctree) as source for kernel'
        $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
                echo "  $(srctree) is not clean, please run 'make mrproper'";\
                echo "  in the '$(srctree)' directory.";\
                /bin/false; \
        fi;
endif
是說,如果是有用 "O= " 指定 output path的話,檢查一下 .config 或是 include/config 在不在。
如果在的話,就 error。顯示 XXX is not clean, please run 'make mrproper'

結果檢查一下, .config 是不在 (因為是在 out),
include/config 卻有,裡面是空的。

run make mrproper 也沒刪掉。

所以只好手動刪了。
之後 run make 就 OK 了。


這是因為是在有指定 O= (output folder) 的狀況下作 make, 但是又忘記設定 O= 選項。
導致 menuconfig 把 config 寫在 source 目錄,不在 out 目錄。

Revelation.. 4.1.1...

所以只好試試 http://forum.xda-developers.com/showthread.php?t=2349756

這個rom 要裝 1.0.0 然後 update 1.0.1, 1.0.2..
gapp 已經內含了

從 recovery 選擇安裝 1.0.0 的時候,竟然跳出圖形畫面,要我touch 螢幕選擇安裝方式,還有一堆安裝選項,最後選擇機型。
安裝過程也是整個圖形 progress bar with install app name..

很專業。

裝完,reboot,我按著 volume down,結果就回到 recovery,
然後就選 update 1.0.1,一樣,是圖形。
裝完 reboot + volume down,選 1.0.2,
裝完 reboot (不按volume down)。

開機,在 Revelation 畫面停很久....
-- 大概有 5min 吧..
開機後竟然是htc sense 的首次開始動作....
註冊一堆帳號...., 然後就在註冊過程中 google play service 停止動作..

.. 結果這是 4.1.1 不是 JB

但是這個版本跟htc 原來的 4.1 不一樣。
像 google now, 已經支援。
facebook 的錄影模式也可以使用。

好像跟標準android的相容性比較高了。

,,果然跟原廠rom一樣...充電超慢..然後開啟 ap 會有點鈍鈍的。
開 pocket 時,hange 住,自己 reboot 過一次..

電池一般使用大概可以用 5 ~ 6 hrs.

一切都好,除了camera 對焦好像有點問題。(但是我用過htc hero, desire, sensation..每個camera都有問題)。
另外看到這個 rom : (http://forum.xda-developers.com/showthread.php?t=2216858) 一樣是基於 htc vanilla..但是有寫修正camera 對焦問題..
.. 接下來試試看。

Instagrame 的進階相機會讓系統當機。

realrace3 不能 run .. system 會 hang 住,然後 reboot..
有幾次,camera hang 住。
曾發生3G 連線一直失敗,reboot 後 OK

但是總的來說,還算 OK 就是...

2013年8月2日 星期五

應該就是CM吧 ,CM10. 1

上次那個 ThinkingBridge,因為耗電太兇,不能用。所以只好再換一個..
[ROM][JB 4.2.2][JDQ39E] ThinkingBridge ROM [pyramid][June 27, 2013][Stable 4]

和thinkingbridge 相比,設定的地方比較少了。

為了公平,和thinkingbridge 裝了一樣多的package。

因為都是基於 AOSP (CM),所以畫面都一樣。


糟糕...好像一樣耗電喔...
還有wifi 偶而出現開關時卡住的問題 。

8.4有更新了 ,來試試。


看了一下說明 ,原來裝完ROM都要做一次電池充放電,禳程式做一次Battery 校正。

8/4 這一版,電池沒有明顯進步,Wifi 沒有仔細測,但是有一個致命的就是 Camera Video 無法錄影。
--但是我是由前一版值些安裝這一版和gapp,然後wip cache而已。

標籤

網誌存檔