2013년 6월 28일 금요일

[S5PV310 Mango310] Release m310_ics404_mrvl8787_130628_Rel (안드로이드 ICS4.0.4)



http://cafe.naver.com/embeddedcrazyboys
http://www.mangoboard.com/


수정 사항 
1. eMMC 인식 되도록 수정 ( U-boot )
2. 1.3M Camera 안되는 문제 수정 (kernel )
3. CM-V310 음악 재생 시 느려지는 문제 수정
4. 7" 1024 x 600 Touch FT5x06 드라이버 포팅 
5. 5M MT9P111 Auto Focus 기능 추가 
6. 비디오 레코딩 시 락업 문제 수정


다운로드 : 

환경구성 
Host Linux: Ubuntu 12.04 64bit
Toolchain : arm-2009q3 
http://cafe.naver.com/embeddedcrazyboys/18501(환경구성)

[## image ]
$tar xvf m310_xxx_image.tgz

[ source ]
$ tar xf m31_xxx.tgz 


[1. u-boot compile ]

$ ./build_uboot


[2. kernel compile]

## kernel clean
$ ./build_kernel clean


## Mango310

## 7" 800x480 MT9P111 카메라 컴파일 방법
$ ./build_kernel defconfig mango310_7inch_800_480_mrvl8787_mt9p111_defconfig
$ ./build_kernel

## VGA 1024x768 (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1304260001&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)

$ ./build_kernel defconfig mango310_vga_1024_768_mrvl8787_mt9p111_defconfig
$ ./build_kernel 

## 7" 1024x600 CAP touch (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1203150001&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
[ FT5x06_7INCH ]
$ ./build_kernel defconfig mango310_7inch_1024_600_ft5x06_mrvl8787_mt9p111_defconfig
$ ./build_kernel

이전 모델인 경우
[ HX8526_7INCH ]
$ ./build_kernel defconfig mango310_7inch_1024_600_mrvl8787_defconfig
$ ./build_kernel

or
## 7" 800x480 touch LCD (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1106150013&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
$ ./build_kernel defconfig mango310_7inch_800_480_mrvl8787_defconfig
$ ./build_kernel
##
## 7" 800x480 touch LCD (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1106150013&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
## and NOON130_Camera config
$ ./build_kernel defconfig mango310_7inch_800_480_mrvl8787_noon130_defconfig
$ ./build_kernel

## 7" 800x480 touch LCD (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1106150013&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
## and 1.3M SR130PC10 Camera config
$ ./build_kernel defconfig mango310_7inch_800_480_mrvl8787_sr130pc10_defconfig
$ ./build_kernel

## 10.1"  1280x800 touch LCD (Link :http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1209270001&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
$ ./build_kernel defconfig mango310_10_1_1280_800_mrvl8787_defconfig
$ ./build_kernel



## Mango-CM-V310 (emmc0 인식 가능)

## 7" 800x480 MT9P111 카메라 컴파일 방법
$ ./build_kernel defconfig mango-cmv310_7inch_800_480_mrvl8787_mt9p111_defconfig
$ ./build_kernel

## VGA 1024x768 (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1304260001&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)

$ ./build_kernel defconfig mango-cmv310_vga_1024_768_mrvl8787_mt9p111_defconfig
$ ./build_kernel 

## 7" 1024x600 CAP touch (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1203150001&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)

[ FT5x06_7INCH ]
$ ./build_kernel defconfig mango-cmv310_7inch_1024_600_mrvl8787_ft5x06_defconfig
$ ./build_kernel
이전 모델 인 경우

[ HX8526_7INCH ]
$ ./build_kernel defconfig mango-cmv310_7inch_1024_600_mrvl8787_defconfig
$ ./build_kernel
or
## 7" 800x480 touch LCD (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1106150013&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
$ ./build_kernel defconfig mango-cmv310_7inch_800_480_mrvl8787_defconfig
$ ./build_kernel
##
## 7" 800x480 touch LCD (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1106150013&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
## and NOON130_Camera config
$ ./build_kernel defconfig mango-cmv310_7inch_800_480_mrvl8787_noon130_defconfig
$ ./build_kernel

## 7" 800x480 touch LCD (Link : http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1106150013&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
## and 1.3M SR130PC10 Camera config
$ ./build_kernel defconfig mango-cmv310_7inch_800_480_mrvl8787_sr130pc10_defconfig
$ ./build_kernel

## 10.1"  1280x800 touch LCD (Link :http://www.mangoboard.com/sub2.html?ptype=view&prdcode=1209270001&catcode=120000&page=1&catcode=120000&grp=&brand=&orderby=&searchopt=&searchkey=)
$ ./build_kernel defconfig mango-cmv310_10_1_1280_800_mrvl8787_defconfig
$ ./build_kernel



##CM-V310 board 버젼 선택 
$ ./build_kernel config
system type ->
Mango Board KEY Select  --->
[ ] MANGO CM-V310 0.2V KEY
[ ] MANGO CM-V310 0.4V KEY

## Mango310 select
system type ->
Select Mango Board Version (MANGO310)  ---> 

보드 select

$ ./build_kernel

### u-boot, kernel fusing
$ cd image
$ df
"device" 확인 
=====================================================
[root@HP-note-jji sd_fuse]# df
Filesystem                         1K-blocks      Used  Available Use% Mounted on
/dev/sda5                          117017192   6281544  104876320   6% /
udev                                  886476        12     886464   1% /dev
tmpfs                                 358104       940     357164   1% /run
none                                    5120         0       5120   0% /run/lock
none                                  895256        76     895180   1% /run/shm
192.168.0.113:/home/icanjji/work/ 1746752512 131875840 1527454720   8% /media/113
/dev/sdb1                            7770112        32    7770080   1% /media/AFE0-2E94

$ sudo ./sdwriter sdb 310 bin

3. android build
u-boot 소스로 이동 
$ sudo cp tools/mkimage /bin/
## Tablet configuration
device/samsung/smdkv310/Boardconfig.mk
## Tablet
#BOARD_USES_HIGH_RESOLUTION_LCD := true

## Phone UI
BOARD_USES_HIGH_RESOLUTION_LCD := false

$ . ./build/envsetup.sh
$ lunch 
7 select

$ ./android_build.sh build
$ ls -F out/target/product/smdkv310/
android-info.txt  data/                obj/                      ramdisk-uboot.img  symbols/  system.img
clean_steps.mk    installed-files.txt  previous_build_config.mk  root/              system/   userdata.img
 

부팅 모드
SD Boot :2, 6 On 



4. kernel ,OS image fusing
after u-boot
# fdisk -c 0
# fatformat mmc 0:1
# fastboot

Host PC 
$ cd image
$ sudo fastboot flash kernel zImage
$ sudo fastboot flash ramdisk ramdisk-uboot.img
$ sudo fastboot flash system system.img
$ sudo fastboot -w 

5. after Reboot , u-boot environment variable setting

Mango310 # setenv bootcmd 'movi read kernel 0 40008000;movi read rootfs 0 41a00000 100000;bootm 40008000 41a00000'
Mango310 # setenv bootargs "console=ttySAC1,115200n8 androidboot.console=ttySAC1"
Mango310 # saveenv




에러 발생 시
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html
에서 다운로드 

$ sudo ./jdk-6u26-linux-x64.bin
$ sudo mkdir /opt/java
$ sudo mv jdk1.6.0_26 /opt/java/



## TIP u-boot fusing
after SD boot 
 fastboot flash bl2 bl1ah 
 fastboot flash bootloader u-boot.bin 
 
## NFS boot
setenv bootcmd "tftpboot 40008000 icanjji/zImage; bootm 40008000"
setenv bootargs "root=/dev/nfs rw nfsroot=192.168.0.113:/home/icanjji/work/nfsroot/m310_android  init=/init ip=192.168.3.20:192.168.0.113:192.168.3.1:255.255.255.0:::off  console=ttySAC1,115200"


## Ethernet MAC Address 설정

Mango310 # setenv ethaddr 04:32:F4:FE:AD:9A
Mango310 # setenv bootargs "console=ttySAC1,115200n8 androidboot.console=ttySAC1"
Mango310 # saveenv
확인 방법 

shell@android:/ # netcfg
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
eth0     DOWN                                   0.0.0.0/0   0x00001002 04:32:f4:fe:ad:9a
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
mlan0    UP                               192.168.3.104/24  0x00001043 00:22:58:6b:8c:8a
uap0     DOWN                                   0.0.0.0/0   0x00001002 00:22:58:6b:8c:8a
wfd0     DOWN                                   0.0.0.0/0   0x00001002 00:22:58:6b:8c:8a

2013년 6월 27일 목요일


http://cafe.naver.com/embeddedcrazyboys
http://www.mangoboard.com/


망고310 ) 7” LCD FT5x06터치 드라이버 포팅
이번에 새로나온 7" LCD 1024x600 정전식 LCD에 대한 드라이버 포팅 가이드 입니다. 
상품 성명 : 

망고210도 수정하면 됩니다. 

수정 파일은

arch/arm/mach-exynos/mach-smdkv310.c:#if!defined(CONFIG_MANGO_TOUCH_HX8526_7INCH) &&!defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH) &&!defined(CONFIG_MANGO_TOUCH_HX8526_7INCH)//CRZ Fix
arch/arm/mach-exynos/mach-smdkv310.c:#ifdefCONFIG_MANGO_TOUCH_FT5x06_101INCH
config.sav:#CONFIG_MANGO_TOUCH_FT5x06_101INCH is not set
drivers/input/touchscreen/Kconfig:configMANGO_TOUCH_FT5x06_101INCH
drivers/input/touchscreen/Makefile:obj-$(CONFIG_MANGO_TOUCH_FT5x06_101INCH)+= mango_ft5x06_ts.o s5pc210_ts_gpio_i2c.o
drivers/input/touchscreen/mango_ft5x06_ts.c:#elifdefined(CONFIG_MANGO_TOUCH_FT5x06_101INCH)
drivers/input/touchscreen/mango_ft5x06_ts.c:#ifndefCONFIG_MANGO_TOUCH_FT5x06_101INCH   /* bycrazyboy */
drivers/input/touchscreen/mango_ft5x06_ts.c:#ifndefCONFIG_MANGO_TOUCH_FT5x06_101INCH   /* bycrazyboy */
drivers/input/touchscreen/mango_ft5x06_ts.c:#ifdefined(CFG_SUPPORT_TOUCH_KEY) ||defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH)      /* by crazyboy */
drivers/input/touchscreen/mango_ft5x06_ts.h:#elifdefined(CONFIG_MANGO_TOUCH_FT5x06_101INCH)
drivers/video/logo/Kconfig:        depends on FB_S5P_LTN101AL03 ||MANGO_TOUCH_FT5x06_101INCH
drivers/video/logo/Kconfig:        depends on FB_S5P_LTN101AL03 ||MANGO_TOUCH_FT5x06_101INCH

이다.

CONFIG_MANGO_TOUCH_FT5x06_7INCH

으로 검색하면 됩니다.
“arch/arm/mach-exynos/mach-smdkv310.c” 파일에서수정

static struct gpio_keys_buttonmango310_gpio_keys_table[] = {
       {
                .code = KEY_MENU,
                .gpio = EXYNOS4_GPX3(3),
                .desc = "gpio-keys:KEY_MENU",
                .type = EV_KEY,
                .active_low = 1,
                .wakeup = 1,
                .debounce_interval = 1,
       },
#if!defined(CONFIG_MANGO_TOUCH_HX8526_7INCH) &&!defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH) && !defined(CONFIG_MANGO_TOUCH_FT5x06_7INCH)//CRZ Fix
       {
                .code = KEY_HOME,
                .gpio = EXYNOS4_GPX3(4),
                .desc = "gpio-keys:KEY_HOME",
                .type = EV_KEY,
                .active_low = 1,
                .wakeup = 1,
                .debounce_interval = 1,
       },
#endif

static struct i2c_board_info i2c_devs0[] __initdata = {
#ifdef CONFIG_SND_SOC_SAMSUNG_SMDK_WM8960
    {
        I2C_BOARD_INFO("wm8960", 0x1a),
    },
#endif
#ifdef CONFIG_INPUT_BMA150
    {
        I2C_BOARD_INFO("bma150", 0x38),
    },
#endif
#ifdef CONFIG_MANGO_TOUCH_HX8526_7INCH
/* by crazyboy_edchoi, init mango_cap_touch_ts touch IC */
    {
        I2C_BOARD_INFO("mango_cap_touch_ts", 0x4A),
    .irq            = IRQ_EINT(28),
    },
#endif

#if  defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH) || defined(CONFIG_MANGO_TOUCH_FT5x06_7INCH)
    {
        I2C_BOARD_INFO("s5pc210_ts", 0x40),
        .irq = IRQ_EINT(28),
    },
#endif
};
“drivers/input/touchscreen/Kconfig” 파일에추가

config MANGO_TOUCH_FT5x06_7INCH
    tristate "crztech mango 7 inch 1024x600 FT5x06 PCAP touch "
    depends on INPUT_TOUCHSCREEN
    default n
    help
      Say Y here to enable the driver for the 7" FT5x06 PCAP touchscreen on the Mango board.
      If unsure, say N. To compile this driver as a module, choose M here: the module will be called s3c_ts.

“drivers/input/touchscreen/Makefile”
추가
obj-$(CONFIG_MANGO_TOUCH_FT5x06_7INCH) += mango_ft5x06_ts.o s5pc210_ts_gpio_i2c.o

“drivers/input/touchscreen/mango_ft5x06_ts.c”
파일에서
/* by crazyboy */
#if defined(CONFIG_MANGO_TOUCH_FT5x06_7INCH)
#define FT5x0x_TX_NUM   38 //28
#define FT5x0x_RX_NUM   24 //16
#elif defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH)
#define FT5x0x_TX_NUM   38
#define FT5x0x_RX_NUM   24
#else
#define FT5x0x_TX_NUM   32
#define FT5x0x_RX_NUM   24
#endif

static void ft5x0x_report_value(void)
{
    struct ft5x0x_ts_data *data = i2c_get_clientdata(this_client);
    struct ts_event *event = &data->event;
    int i;
    static int key_pressed = 0;

    MANGO_CAP_TOUCH_DBG1("%s: npoint = %d\n", __func__, event->touch_point);    /* REMOVEIT: by crazyboy */
    for (i  = 0; i < event->touch_point; i++)
    {
#if !defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH) && !defined(CONFIG_MANGO_TOUCH_FT5x06_7INCH)    /* by crazyboy */
        event->au16_x[i] = SCREEN_MAX_X - event->au16_x[i];
        event->au16_y[i] = SCREEN_MAX_Y - event->au16_y[i];
        if (event->au16_x[i] == 1) {
            if (key_pressed)
                break;
            if (event->au16_y[i] == 1) {
                MANGO_CAP_TOUCH_DBG1("%s[MENU]: %d, %d\n", __func__, event->au16_x[i], event->au16_y[i]);
                input_report_key(data->input_dev, KEY_MENU, 1);
                key_pressed = 1;
            } else {
                MANGO_CAP_TOUCH_DBG1("%s[BACK]: %d, %d\n", __func__, event->au16_x[i], event->au16_y[i]);
                input_report_key(data->input_dev, KEY_BACK, 1);
                key_pressed = 2;
            }
            break;
        }
#endif

#if defined(CFG_SUPPORT_TOUCH_KEY) || defined(CONFIG_MANGO_TOUCH_FT5x06_101INCH) || defined(CONFIG_MANGO_TOUCH_FT5x06_7INCH)    /* by crazyboy */
    //setup key code area
    set_bit(EV_SYN, input_dev->evbit);
    set_bit(BTN_TOUCH, input_dev->keybit);
    input_dev->keycode = tsp_keycodes;
    for(i = 0; i < CFG_NUMOFKEYS; i++)
    {
        input_set_capability(input_dev, EV_KEY, ((int*)input_dev->keycode)[i]);
        tsp_keystatus[i] = KEY_RELEASE;
    }
#endif

“drivers/input/touchscreen/mango_ft5x06_ts.h”파일에서

// by crazyboy,
#ifdefined(CONFIG_MANGO_TOUCH_FT5x06_7INCH)
#defineSCREEN_MAX_X    1024
#defineSCREEN_MAX_Y    600
#define PRESS_MAX       255
#elifdefined(CONFIG_MANGO_TOUCH_FT5x06_101INCH)
#define SCREEN_MAX_X    1280  //1024
#define SCREEN_MAX_Y    800  //600
#define PRESS_MAX       255
#else

“drivers/video/logo/Kconfig” 파일에 추가

config LOGO_CRZ_1024_600
        bool "224-color 1024x600 CRZ Linux logo"
        depends on FB_MANGO_7INCH || MANGO_TOUCH_HX8526_7INCH || MANGO_TOUCH_FT5x06_7INCH
        default y

커널 configuration

CONFIG_MANGO_TOUCH_FT5x06_7INCH=y

2013년 6월 26일 수요일

[Mango64 ] Linux 소스 릴리즈 mango64_linux_2013_0625_Rel_cam

http://cafe.naver.com/embeddedcrazyboys
http://www.mangoboard.com/



수정 사항 
1. 5M Camera 포팅 완료 ( Auto Focus 기능 )
2. Marvell8787 WiFi/BT 포팅 
3. LCD 왼쪽에 커서 깜박이는 문제 Patch

소스 다운로드 

 [Environment Setting ]
http://cafe.naver.com/embeddedcrazyboys/18501

[U-boot Compile ]

$ ./build_uboot

[ Kernel Compile ]

$ ./build_kernel defconfig mango64r2_7inch_mrvl8787_defconfig ; ./build_kernel
[ filesystem ]
# sudo ./mkyaffs2image rootfs rootfs.yaffs2

Nor Booting : 1, 3, 5 ON 
dnw tool에서 
downloader address : 0x57e00000

usb port -> transmit -> transmit 에서 u-boot.bin 
선택 
nand scrub

dnw 51000000         
# nand erase 0 40000; nand write 51000000 0 40000
[kernel ]


# tftpboot 
tftpboot 51000000 zImage;bootm 51000000

## usb otg 로
[ nand write]
- u-boot write
nand erase 0 40000;dnw  51000000 ;nand write 51000000 0 40000
# host pc linux 
# sudo ./smdk-usbdl -f u-boot.bin -a 51000000
- kernel write

nand erase 40000 300000;dnw  51000000;nand write 51000000 40000 300000
# host pc linux 
# sudo ./smdk-usbdl -f zImage -a 51000000
- filesystem write

nand erase 400000 8000000;dnw  51000000

# host pc linux 
# sudo ./smdk-usbdl -f rootfs.yaffs2 -a 51000000

nand write.yaffs 51000000 400000 $(filesize)
" dnw tool" 하는 방법도 있습니다. 

[nand boot]
# After u-boot 
setenv bootargs "root=/dev/mtdblock2 rootfstype=yaffs2 init=/sbin/init console=ttySAC1,115200"
setenv bootcmd "nand read 50008000 40000 300000;bootm 50008000"
save
reset


[NFS booting ]
setenv bootargs "root=/dev/nfs rw nfsroot=192.168.3.9:/home/icanjji/work/nfsroot/rootfs init=/sbin/init ip=192.168.3.20:192.168.3.9:192.168.3.1:255.255.255.0:::off  console=ttySAC1,115200 "
setenv ipaddr 192.168.3.20; setenv gatewayip 192.168.3.1; setenv serverip 192.168.3.9  

[wifi test ]

$ insmod mlan.ko
$ insmod sd8787.ko
$ ifconfig mlan0 up
$ iwlist mlan0 scan
$ iwconfig mlan0 essid CRZ
$ udhcpc -imlan0

$ ping 192.168.3.1


[camera test]

mknod /dev/video0 c 81 0

./capture 
    
Full 화면 프리뷰 시
capture_mt9t111.c 파일에서 아래와 같이 수정 

#define PREVIEW_WIDTH       800//640 //320
#define PREVIEW_HEIGHT      480 //240

인증 샷