# svnadmin create --fs-type fsfs uboot
# chown -R nobody.bsp uboot
# chmod -R g+w uboot
# chmod -R g+x uboot/db

#svnserve -d -r /home/svn



기본 개념의 이해

  • 소스 코드 버전 관리 도구: 동시 개발, 소스 충돌 회피
  • 레파지토리(repository): 저장소. 소스 코드가 버전별로 모두 저장.
  • 작업 복사본(working copy): 저장소에서 내려받은 소스 코드 작업 복사본. 로컬 작업 공간(working space)
  • 리비전(revision): 갱신 번호. 매번 수정이 발생할 때마다 증가.
  • 브랜치(branch): 가지 뻗어나가기, 여러 버전의 동시 진행 및 통합(merge)
  • 트렁크(trunk): 개발 가지들 가운데 가장 중심이 되는 줄기.
  • 태그(tags): 개발 버전의 스냅샷.
  • Import: 최초로 레파지토리에 자료를 올림. (레파지토리 중심 관점)
  • Export: 레파지토리에서 자료를 내려 받음. 버전 관리 정보 제외. (레파지토리 중심 관점)
  • Checkout: 레파지토리에서 자료를 내려 받음. 버전 관리 정보 포함.
  • Commit: 작업 영역에서의 변경내역을 레파지토리에 실제 반영하는 명령어.

초기 설정

  • 저장소 설정: [관리자 설정사항]
    # fsfs 파일시스템 타입
    $ svnadmin create --fs-type fsfs repo_name
    # bdb 버클리 디비 타입
    $ svnadmin create --fs-type bdb repo_name
    • 통상적으로 /var/svn 또는 /var/repos 위치에 저장소 디렉토리를 설정, 그 아래에서 저장소 생성
    • 아파치 DAV를 사용하여 svn에 접속할 경우에는 chown -R apache repo_name 또는 chmod -R a+w repo_name 실행.
  • 기본 디렉토리 구조 설정: trunk, branches, tags
    $ svn mkdir http://svn_server.com/svn/repo_name/project_name/trunk
    $ svn mkdir http://svn_server.com/svn/repo_name/project_name/branches
    $ svn mkdir http://svn_server.com/svn/repo_name/project_name/tags
    • 별도로 압축해서 배포하지 않는 웹 프로젝트인 경우에는 trunk, branches, tags 구조 생략 가능.
    • 통상 repo_name 까지는 관리자가 생성해서 알려줌. 그 아래 프로젝트 단위 이하 구조는 개발자가 생성.
    • repository 단위로 리비전(revision) 번호가 매겨지므로, 너무 큰 단위로 저장소를 설정하지 않는 것이 좋음.
    • 완전히 별개의 프로젝트인 경우에는 가급적 별도의 레파지토리를 설정하는 것이 좋음.
  • svn import: 최초로 레파지토리에 자료를 올림. (레파지토리 중심 관점)
    # project_name 디렉토리를 지정하는 경우
    $ svn import project_name http://svn_server.com/svn/repo_name/project_name/trunk
    # project_name 디렉토리를 지정하지 않는 경우. 현재 디렉토리 전체가 올라감.
    $ svn import http://svn_server.com/svn/repo_name/project_name/trunk
    • 별도로 trunk, branches, tags 구조를 설정하지 않은 경우에는 그냥 project_name 까지만 지정.
  • svn checkout (co) : 작업 영역으로 레파지토리 내용을 내려받음. 작업 복사본(WC: working copy) 생성.
    # project_name 이라는 디렉토리 새로 생성
    $ svn checkout http://svn_server.com/svn/repo_name/project_name/trunk project_name
    # 또는 마지막 인수를 입력하지 않으면 URL의 최종단인 basename으로 디렉토리가 생성됨.
    # 아래 예에서는 trunk 라는 디렉토리가 새로 생성됨.
    $ svn checkout http://svn_server.com/svn/repo_name/project_name/trunk
  • 기본 편집기 설정: commit 명령 실행시에 -m "메시지" 옵션을 지정하지 않으면 Editor가 뜸. 이때 사용할 편집기를 설정.
    # .profile 또는 .bash_profile안에 추가
    SVN_EDITOR=/usr/bin/vim
    export SVN_EDITOR

주의 사항

  • svn이 걸려있는 디렉토리에서 작업을 할 경우에는 반드시 svn 명령만을 사용해서 파일 변경/삭제 작업을 수행해야 함. 파일 생성후에도 svn add 명령으로 저장소 추가를 예약해놓아야 함.
  • 디렉토리 역시 svn mkdir 명령으로 생성하거나 svn add 로 추가를 예약해야 함. 디렉토리 변경/삭제 역시 svn 명령 사용해야 함.
  • svn 걸려있는지 아닌지 구별하는 방법: svn이 걸려있는 디렉토리에는 .svn 이라는 숨겨진 디렉토리가 있음.
  • 파일 관련 시스템 명령어(cp, mv, rm)를 그대로 사용할 경우에는 svn 체계에 혼선이 생겨서 이후 변경 내용이 반영되지 못하는 문제가 발생함
  • 모든 svn 관련 작업 이후에는 svn commit 명령을 실행해줘야 svn 저장소에 반영이 됨

주요 명령어

  • svn help : 상세 사용법 출력. svn help subcommand 도 가능.
  • svn add : 새로 생성한 파일이나 디렉토리를 저장소에 추가 예약
  • svn mkdir : 디렉토리 새로 생성
  • svn delete (del, remove, rm) : 파일이나 디렉토리를 삭제 (로컬과 저장소 둘다)
  • svn move (mv, rename, ren) : 파일이나 디렉토리를 이동하거나 이름 변경
  • svn copy (cp) : 파일이나 디렉토리 복사
  • svn update (up) : 작업 영역을 저장소 정보에 맞춰서 업데이트.
  • svn commit (ci) : 작업 영역의 변경 내역을 저장소에 저장.
  • svn status (st) : 상태 보기
  • svn log : 로그 기록 확인
  • svn diff : 차이점 확인
  • svn dump : 저장소 내용을 덤프해서 파일에 저장
  • svn load : 덤프 파일 내용을 저장소에 쏟아넣음
    # 저장소 백업
    $ cd /var/svn
    $ svnadmin dump repo_name > repo_name.dump
    # 저장소 복구
    $ cd /var/svn
    $ svnadmin create repo_name
    $ svnadmin load repo_name < repo_name.dump

참고 링크

출처 : http://blog.naver.com/joycestudy?Redirect=Log&logNo=100045501722

 SVN HOWTO
http://wiki.kldp.org/wiki.php/Subversion-HOWTO#s-5.5






--*p : 단항 연산자는 연산 결합 순서가 오른쪽부터 시작된다. 그러므로 *p가 먼저 해석 되고 -- 연산이 되므로 *p값이 1줄어든 4로 출력된다.






*p-- : 단항 연산자는 연산 결합 순서가 오른쪽부터 시작한다. 그러므로 p--가 먼저 해석 되기 때문에 p값 자체가 줄어든다.

연산자 우선순위 및 결합순서
 컴퓨터언어는 개발자를 비롯한 컴퓨터 과학/공학자들의 요구에 따라 다양하게 진화되었다. 최대한 인간의 일반적인 사고를 바탕에 두고 문법과 체계를 만든 것이지만, 아무래도 언어 개발자들의 마인드가 포함되어 있어 일반에게는 약간 어렵기도 한 것 같다. 다음은 C++ 연산자 우선순위표이다. 이것을 잘 알아야, 복잡한 포인터와 구조체, 배열이 섞인 복잡해 보이는 식도 기계적으로 풀어낼 수 있다. 그러므로 다음은 반드시 암기 가능하면 이해할 사항이다.

간략본(http://www.winapi.co.kr/clec/cpp1/5-4-1.htm)

순위

연산자

결합순서

1

( ) [ ] -> .

왼쪽 우선

2

! ~ ++ -- + -(부호) *(포인터) & sizeof 캐스트

오른쪽 우선

3

*(곱셈) / %

왼쪽 우선

4

+ -(덧셈, 뺄셈)

왼쪽 우선

5

<< >>

왼쪽 우선

6

< <= > >=

왼쪽 우선

7

== !=

왼쪽 우선

8

&

왼쪽 우선

9

^

왼쪽 우선

10

|

왼쪽 우선

11

&&

왼쪽 우선

12

||

왼쪽 우선

13

? :

오른쪽 우선

14

= 복합대입

오른쪽 우선

15

,

왼쪽 우선


상세본(http://www.cppreference.com/operator_precedence.html)
사용자 삽입 이미지

자바(http://www.tech-faq.com/lang/ko/java-operator-precedence.shtml)
자바 연산자 우선순위는 자바를 결정하는 방법을 평가 연산자를 사용하여 첫 번째합니다.

In this chart, operator precedence is displayed from highest precedence to lowest precedence. 이 차트, 연산자를 우선 순위가 높은 우선 순위가 낮은 우선순위를 표시합니다.

우선순위 연산자 기능 결합순서
1 [] Array index 어레이 색인 Left to Right
() Method call 메서드 호출
. Member access 회원에 액세스
2 ++ Prefix or postfix increment 접두사 또는 postfix 증감 Right to Left
-- Prefix or postfix decrement 접두사 또는 postfix 감소
+ - Unary plus, minus 단항 플러스, 마이너스
~ Bitwise NOT 비트없는
! Boolean (logical) NOT 부울 (논리)
(type) Type cast 유형 캐스트
new Object creation 개체를 창출
3 * / % Multiplication, division, remainder 곱셈, 부서, 나머지 Left to Right
4 + - Addition, subtraction 또한 뺄셈 Left to Right
+ String concatenation 문자열 연결
5 << Signed bit shift left to right 서명 비트 교대 왼쪽에서 오른쪽으로 Left to Right
>> Signed bit shift right to left 서명 비트 교대 오른쪽에서 왼쪽으로
>>> Unsigned bit shift right to left 오른쪽에서 왼쪽으로 서명되지 않은 비트 교대
6 < <= Less than, less than or equal to 미만, 이하 같음 Left to Right
> >= Greater than, greater than or equal to 보다 큼, 크거나 같음
instanceof Reference test 참조 테스트
7 == Equal to 같음 Left to Right
!= Not equal to 같지 않음
8 & Bitwise AND 비트 및 Left to Right
&& Boolean (logical) AND 부울 (논리)과
9 ^ Bitwise XOR 비트 xor Left to Right
^ Boolean (logical) XOR 부울 (논리) xor
10 | Bitwise OR 비트 또는 Left to Right
| Boolean (logical) OR 부울 (논리) 또는
11 && Boolean (logical) AND 부울 (논리)과 Left to Right
12 || Boolean (logical) OR 부울 (논리) 또는 Left to Right
13 ? : Conditional 조건부 Right to Left
14 = Assignment 과제 Right to Left
*= /= += -= %=
<<= >>= >>>=
&= ^= |= 
Combinated assignment 임무는 combinated
(operation and assignment) (작업과 배정)

Notes: 참고 사항 :

  • Expressions inside parentheses are evaluated first 괄호 안에 표현을 평가할 수있습니다 첫 번째
  • Nested parentheses are evaluated from the innermost parentheses to the outermost parenthesis. 중첩된 괄호는 괄호를 안쪽에서 바깥쪽 괄호을 평가합니다.
  • Operators in the same row in the chart have equal precedence. 차트에서와 같은 행에 연산자를 우선 순위가 동일합니다.

참고
- 이쪽 블로그를 보면 연산자 우선 순위에 대한 여러 생각들을 정리해 놓았다

출 처 : http://learder.tistory.com/827019

The bootloader that comes factory installed on the Micro2440 and the Mini2440 board is called Supervivi. I don't personally like it. It has very limited support and requires a YAFFS filesystem for the root filesystem. So when I bought my board I began to immediately search out an alternative. The bootloader by choice, it seems, is a modified version of U-Boot with modifications for the Mini2440 board's hardware

The code is maintained by a guy named buserror. I'll provide his information at the end of this howto.

At the time of writing this, I had some issues with getting Buserror's U-Boot working correctly.

The code that is in his git repository, doesn't run from RAM without a modification to the source. So here are the instructions that I gathered for altering and compiling it, and getting it going on the Mini2440 and Micro2440 board.

For this to work, I'm going to assume that you have a crosscompiler set up. Later on, I will probably write an entry here about setting that up, but not now. I'm also assuming you have git installed.

Step 1: Get the source

mkdir uboot ; cd uboot
git clone git://repo.or.cz/u-boot-openmoko/mini2440.git

Step 2: Set your cross compiler prefix so you don't end up compiling this for x86.

export CROSS_COMPILE=arm-none-linux-gnueabi-

Step 3: Modify the source to disable CONFIG_USE_IRQ. Open include/configs/mini2440.h.

#define USE_920T_MMU
//#define CONFIG_USE_IRQ 1 /* Needed for USB device! */

Disabling this obviously disables the use of USB During boot. You can fix this by reflashing a normal copy of u-boot from within u-boot once this is up and running. In the above example, I commented it out but you can probably just change the 1 to a 0.

Step 4: Make and compile.

 cd ../../
make mini2440_config
make

Assuming this all compiles correctly, you will have a u-boot.bin file in your directory now as well as a 2k and 16k block size bin file. Those two are for flashing inside of U-Boot. The normal .bin is for flashing from ram from within supervivi.

Step 5: Flashing u-boot to the mini2440. In this example, we'll be using DMW for Windows to transfer the binary over to the board with the supplied USB cable.

5a. Set boot switch to NOR.

5b. When supervivi pops up, hit q for supervivi shell.

5c. Load the image in to ram at 0x32000000 (6 zeros) memory location.

 shell> load ram 0x32000000 <uboot bin size in bytes> u-boot

5d. Use DNW to transfer the u-boot.bin from your computer to the board.

5e. Execute the loaded bin file you loaded in to RAM.

shell> go 0x32000000

5f. You should now be inside u-boot at a MINI24440# prompt. Now we prepare the NAND.

MINI2440# nand scrub

5g. Create the bad block table.

MINI2440# nand createbbt

5h. Write the u-boot that we're running at 0x32000000, to the NAND.

MINI2440# nand write.e 0x32000000 0x0 <u-boot bin size in hex>

5i. Partition the NAND.

MINI2440# dynpart

5j Create the dynamic environment space for u-boot.

MINI2440# dynenv set u-boot_env

5k. Save the environment to NAND.

MINI2440# saveenv

You can now set the boot switch back to NAND and reboot the system. It should pop up with U-Boot and give you a MINI2440# uboot prompt. From this point on you can do all your work inside U-boot for loading images for the kernel and for the filesystem. I would like to note though, that in the above examples, you need to know your u-boot bin file size in both bytes and in hex. You can use google to convert the file size in bytes to hex. (i.e. "233907 to hex" in the google search box). I recommend trying to run u-boot without the source modification first before disabling IRQ because I'm guessing at some point, buserror or someone else will figure out why it won't run from RAM with that enabled. If it fails, and you can always modify the source and recompile.

I'd like to note that I collected these instructions from various sites and I've re-worded and explained them some to help. I hope that this helps you.

Here are some useful links for u-boot and other things:

http://bliterness.blogspot.com/ - Busseror's blog

http://code.google.com/p/mini2440/ ... - Buserror's Google code page.

http://repo.or.cz/w/openembedded/mi... - Git repository for the modified Openembedded

http://repo.or.cz/w/u-boot-openmoko... - Git repository for u-boot

UPDATE: MAY 8th, 2010: As of writing this update, the code in the git repository already has the above modification to the code. If you for any reason require USB support on your bootloader, you will need to uncomment the line that is commented out above and recompile.

UPDATE MAY 31st, 2010: There have been some problems with the current repository code and it won't run from RAM for some devices. So here's a quick workaround.

  • 1. Switch the system to NOR and boot with supervivi.
  • 2. hit v in supervivi
  • 3. i uploaded the u-boot.bin file
  • 4. switch the system to NAND and boot up with u-boot. You'll get some errors.
  • 5. Run nand scrubs and createbbt
  • 6. switch back to NOR
  • 7. hit v again and upload U-boot since you just erased it.
  • 8. switch back to nand and it should boot up with minimal errors using u-boot.
  • 9. run the dynpart and dynenv and saveenv as mentioned above.

You should have a working u-boot... I'm currently getting an error about it not seeing my nand but it seems to be able to access it. Maybe you guys can let me know if you see anything wrong. I am suspecting there is a problem with the new u-boot code. Maybe buserror can shed some light on this.

Contents

[hide]

About

This is a howto install uboot and a new kernel on the mini2440. Big thanks to BusError for the instructions and guidance. DISCLAIMER: This worked for me, if it eats your cat or burns your kitchen sink, don't blame me.

Preparations

Toolchain

I used this one: http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

Add the bin dir to the $PATH. If you have a toolchain with another prefix (like arm-linux-) adapt the CROSS_COMPILE environment variable in the next steps.

Setting up the bootloader

Compiling uboot

Clone the git tree:

mkdir uboot ; cd uboot
git clone git://repo.or.cz/u-boot-openmoko/mini2440.git

Setup cross compiling:

export CROSS_COMPILE=arm-none-linux-gnueabi-

or edit your .bashrc eg.

export CROSS_COMPILE=arm-none-linux-gnueabi-
export PS1="\[\033[1;34m\]\u \[\033[0m\]\w:\$: \[\033[0m\]"
#export PS1="\u:\w\$>"
LS_OPTIONS="--color=auto"
alias ls="ls $LS_OPTIONS"

Prepare the mini2440 target:

cd mini2440
make mini2440_config

Compile:

make all

This will give you a "u-boot.bin". If you get an error about a missing whatever-gcc, verifiy if there is a hardcoded CROSS_COMPILE setting in the Makefile

Flashing uboot

We use the installed vivi bootloader to load uboot via usb. Power the board off, set the NOR switch to on, power the board on. You'll get the vivi output on the serial console. Press 'q' to go to the shell and do the "load flash" on address 0 with the size of "u-boot.bin" (238232 bytes in this example):

[q] Goto shell of vivi                                                          
Enter your selection: q
Supervivi> load flash 0 238232 u
USB host is connected. Waiting a download.

Use the "s3c2410_boot_usb" utility (http://mini2440.googlecode.com/files/s3c2410_boot_usb-20060807.tar.bz2) to upload the "u-boot.bin" via usb:

./s3c2410_boot_usb u-boot.bin 

You'll see something like this as output, ignore the error message:

csum = 0x9a6e
send_file: addr = 0x33f80000, len = 0x0003a298
Error downloading program

and this on the serial console:

Now, Downloading [ADDRESS:30000000h,TOTAL:238242]                               
RECEIVED FILE SIZE: 238242 (232KB/S, 1S)
Downloaded file at 0x30000000, size = 238232 bytes
Found block size = 0x0003c000
Erasing... ... done
Writing... ... done
Written 238232 bytes
Supervivi>

Then you see

MINI2440 # saveenv

Saving Environment to NAND...

Erasing Nand...nand_erase: attempt to erase a bad block at page 0x00000260

Try

MINI2440 # nand scrub
...
Really scrub this NAND flash? <y/N>

press y and enter. After erasing make

MINI2440 # nand createbbt

press y and enter. Now you can save the environment

 MINI2440 # saveenv

Now power off the board, set the NOR switch back to off, and power on the board. We verify the version and then prepare config storage in flash:

MINI2440 # version                                                              

U-Boot 1.3.2-dirty-moko12 (Mar 8 2009 - 13:50:19)

MINI2440 # dynenv set 40000
device 0 offset 0x40000, size 0x3fc0000
45 4e 56 30 - 00 00 04 00

MINI2440 # saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done

MINI2440 # reset

Configure uboot

do a "printenv" to show active settings. Adjust the IP for uboot and the tftp server. We need proper IP connectivity to load the kernel with tftp. "setenv" is your friend. "saveenv" stores the setting to flash.

Kernel

Compilation

Fetch from git:

mkdir kernel ; cd kernel
git clone git://repo.or.cz/linux-2.6/mini2440.git
cd mini2440
mkdir -p ../kernel-bin

Generate .config from mini2440 template:

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig

(optional) if you want to modify kernel modules use this command afterwards:

(optional if you don't have libncurses5-dev) apt-get install libncurses5-dev
cd ../kernel-bin
make ARCH=arm menuconfig
cd ../mini2440

Compile kernel and modules:

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/

Generate "uImage" with the "mkimage" tool:

../uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage /tftpboot/uImage

Kernel Modules

To create the dynamically loaded kernel modules, which would go into the root file system later on do this:

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ modules
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=.. modules_install

After this step, there should be a directory ../lib which would contain the dynamically loaded modules(drivers). This folder would go to the root file system of your board, for example I have my filesystem on a sd card. I would stick the SD card in the PC, and mount it and then copy the modules as:

 cp ../lib/modules/2.6.32-rc8/ /media/rootfs/lib/modules/ -r

don't forget to

sync
umount /media/*

Flash kernel

Verify partitions, we need the offset for the kernel partition (probably 0x60000):

mtdparts

Erase the kernel partition:

nand erase 60000 <padded size>

Load the kernel with uboot into ram:

tftp 0x32000000 uImage

Note the size, pad it to 512 byte and use the nand write command to flash it:

nand write 32000000 60000 <padded size>.

Configure uboot

We use a nfs chroot for now:

setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=1tb ip=192.168.80.12 root=/dev/nfs rw nfsroot=192.168.80.1:/home/public/arm

This is helpful for automatic booting:

setenv bootcmd 'nboot.e kernel ; bootm'

Setting up embedian

Follow this nice howto from BusError http://code.google.com/p/mini2440/wiki/Emdebian

Bit Baking Angstrom, and QT Embedded 4

If you are using Fedora follow this link : http://www.electronics.diycinema.co.uk/embedded/mini2440/bitbaking-the-kernel-angstrom-and-qt4-embedded-all-at-once/comment-page-2/#comment-498 , otherwise follow here:

Getting the required software

cd ~
mkdir OE
cd OE
git clone git://repo.or.cz/openembedded/mini2440.git openembedded

Getting other required Softwares

sudo apt-get install gawk diffstat help2man texi2html texinfo build-essential subversion cvs unzip texinfo git-core
sudo dpkg-reconfigure dash

and choose "<No>" from the menu.

Then we create a helper for ourselves:

gedit ~/OE/source-me.txt

and past the following, and change the /home/ashkax to your own home directory address.

export OETREE="/home/ashkax/OE"
BBPATH=${OETREE}/:${OETREE}/openembedded/
echo Setting up dev env for Ångström
if [ -z ${ORG_PATH} ] ; then
ORG_PATH=${PATH}
export ORG_PATH
fi

if [ -z ${ORG_LD_LIBRARY_PATH} ] ; then
ORG_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
export ORG_LD_LIBRARY_PATH
fi

PATH=${OETREE}/openembedded/bitbake/bin:${ORG_PATH}
LD_LIBRARY_PATH=
export PATH LD_LIBRARY_PATH BBPATH
export LANG=C
export BB_ENV_EXTRAWHITE="MACHINE DISTRO OETREE ANGSTROM_MODE ANGSTROMLIBC LIBC"
sudo sysctl vm.mmap_min_addr=0
echo "Altered environment for OE Development"

This file that we just created will be used later on, to setup the compiler... Now lets edit the bitbake configuration file to tell bit bake we like it to compile the QT embedded for us too:

cd ~/OE/openembedded
wget http://www.electronics.diycinema.co.uk/wp-content/uploads/2009/11/local.conf.txt
gedit local.conf.txt

now change all the doug to your own user name, save the file and quit gedit. Then

cp local.conf.txt conf/local.conf

Alternatively you can use the original sample file and edit it to your liking:

cd openembedded
gedit mini2440_local_conf_example.conf
cp mini2440_local_conf_example.conf conf/local.conf

Adding QT to baking recipes

gedit ~/OE/openembedded/recipes/images/mini2440-image.bb

it would be something like:

#Angstrom bootstrap image
IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
ANGSTROM_EXTRA_INSTALL ?= ""

DEPENDS = "task-base-extended \
psplash-zap \
esekeyd u-boot-utils tslib \
i2c-tools i2c screen rsync nfs-utils \
directfb gdbserver directfb mtd-utils \
"

IMAGE_INSTALL = "task-base-extended \
${ANGSTROM_EXTRA_INSTALL} \
psplash-zap qt4-embedded\
esekeyd u-boot-utils tslib-calibrate tslib-tests \
i2c-tools i2c screen rsync nfs-utils-client \
directfb gdbserver directfb mtd-utils \
rsvg pango \
"

export IMAGE_BASENAME = "mini2440-image"
IMAGE_LINGUAS = ""
inherit image

running the bitbake

Now all you have to do is source the script from wherever you put it:

source ~/OE/source-me.txt
cd ~/OE/openembedded/
bitbake mini2440-image


If you get an error trying to build a package try cleaning it: bitbake -c clean INSERTPACKAGENAME

Then try and build the image again. Maybe you won’t have this problem. I guess it’s either because the checksum parser failed to build or my hdd is dodgy. It only happened once on binutils but worked fine after cleaning it.

A few hours later if all goes well you should have images in: ~/OE/oetmp/deploy/glibc/images/mini2440/

Obviously that directory depends on what you setup in the local.conf.

but, for a fun start boot up your mini2440 with the new image that you've just created and issue the following command:

ts_calibrate 
ts_test
qtdemo -qws


Troubleshooting

Write errors

When you have bad blocks in NAND, you'll get write errors. This gives more information: http://wiki.openmoko.org/wiki/NAND_bad_blocks

Clear the flash (do not reset the board till uboot is reinstalled, or you need to use NOR/vivi to reinstall uboot via usb):

nand scrub

Create new bad blocks table:

nand createbbt

Reflash uboot (use the size in the output from the tftp command and pad it to hit 512 byte boundaries for the nand write command)

tftp 0x32000000 u-boot.bin
nand write 32000000 0 <size of u-boot.bin>
reset

Create dynamic partitions:

dynpart
dynenv set u-boot_env
saveenv
reset

And then use write.e to write to the mtdparts, e.g.:

tftp 0x32000000 uImage
nand write.e 32000000 kernel
nboot.e kernel

Python Alignment trap, Segmentation fault

This error and some other errors related to illegal instructions happened because all packages are compiled with -mthumb though the kernel and modules use -mno-thumb. The mix of instruction sets seem to cause problems. A hotfix is to edit your conf/distro/include/angstrom.inc and change the line: ANGSTROM_ARM_INSTRUCTION_SET_armv4t = "thumb" to ANGSTROM_ARM_INSTRUCTION_SET_armv4t = "arm"

The default for the mini2440 is -mno-thumb but for some reason (save memory space, maybe?) the angstrom distro overrides this for all armv4t family processors.



Messed Up Screen Positions( or TS calibration) IN QT

If the resolution is messed up or you can run the ts_calibrate but the hitting points are out of range, it may be because of the boot arguments.. Reboot your system, press a key in startup to go to uboot environment and make sure mini2440=0tb for 3.5" screen, and mini2440=1tb for 7" screen. Try using the commands printenv, and setenv to do so.

Try ts_calibrated after booting.

Links

http://bliterness.blogspot.com/

http://code.google.com/p/mini2440/

http://blog.cor-net.org/ (Qt 4.5 on mini2440)

http://wiki.openembedded.net/index.php/Getting_Started

http://www.sereno-online.com/site/2010/05/01/qt-4-6-2-installation-procedure-for-friendlyarm-mini-2440-board/ (Qt 4.6.2 on mini 2440)

출 처 : http://wiki.linuxmce.org/index.php/Mini2440#Setting_up_embedian

안녕하세요?

현재 국내에 GIT에 대한 제대로 된 문서가 없기에,  GIT 사용자 가이드에 대하여 번역을 시작하게 되었습니다.

번역의 오류로 틀린 내용이 있을 수도 있으니, 오류 발견시 댓글을 남겨주시면 감사하겠습니다.

GIT 사용법 (ProGIT) - 1.4. GIT 설치

원본 : ProGIT  Book(http://progit.org)

번역 : 김재훈(이솝 임베디드 포럼, http://www.aesop.or.kr)

1.4. GIT 설치

이제 GIT를 사용하는 방법에 대해 알아보도록 합니다. 우선, GIT를 사용하기 위해서는 GIT를 설치해야 합니다.

GIT를 설치하는 방법에는 소스를 받아서 컴파일 하는 방법과 플랫폼에 따라 각각 존재하는 패키지를 사용하여 설치하는  두 가지 방법이 있습니다.

1.4.1. GIT 소스 컴파일 방법

GIT 소스를 받아 직접 컴파일하여 설치하는 방법은 가장 최신의 GIT 버전을 적용할 수 있다는 것이 장점 입니다.

GIT는 버전이 올라갈 때마다, 유저 인터페이스 및 기타 기능들이 향상 되고 있습니다.

따 라서, 많은 Linux 배포본들이 매우 오래된 GIT 버전을 패키지로 제공하는 일이 자주 있기 때문에, 만약 사용자가 소스를 컴파일하는 방식에 위화감을 느끼지 않는다면 GIT 소스를 받아 직접 컴파일 하는 방법이 최신 버전을 사용하는 가장 좋은 방법 입니다.

우선 GIT 소스를 컴파일 하기 위해서는 GIT 컴파일에 의존적인 라이브러리들을 우선 설치할 필요가 있습니다.

GIT 컴파일에 의존적인 라이브러리는 curl, zlib, openssl, expat, liviconv 입니다.

만 약 사용자가, Fedora 배포본 기반의 리눅스 시스템을 사용하고 있다면 yum 명령을 사용하고, uBuntu Linux와 같은 Debian 계열의 운영체제는 apt-get 명령을 이용하여 의존적인 라이브러리를 손쉽게 설치 할 수 있습니다.

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

GIT를 컴파일하는데 필요한 의존적인 라이브러리를 모두 설치하였다면,  이제 GIT의 웹 사이트에서 최신판의 Snapshot을 다음 명령을 통해 가져올 수 있습니다.

http://git-scm.com/download

이제, 다음 명령으로 소스를 컴파일 하고 인스톨 합니다.

$ tar -zxf git-1.6.0.5.tar.gz
$ cd git-1.6.0.5
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

GIT가 잘 컴파일 되었다면, 이제 GIT 명령을 이용하여 다음과 같이 최신판의 GIT 소스를 GIT를 이용하여 얻어올 수 있습니다.

$ git clone git://git.kernel.org/pub/scm/git/git.git

1.4.2. Linux 배포본에서의 설치

리눅스 배포판에서 제공하는 패키지 설치 프로그램을 통해 설치를 하고 싶은 경우, 다음과 같은 명령을 사용하여 설치를 진행 할 수 있습니다.

Fedora 및 Redhat 계열 배포본의 경우 다음의 명령을 사용 합니다.

$ yum install git-core

Ubuntu와 같은 Debian 계열 배포본의 경우 다음의 명령을 사용 합니다.

$ apt-get install git-core

1.4.3. Macintosh 에서의 설치

MacOS에 GIT를 설치하는 방법은 두 가지 방법이 있습니다.

이중에서 가장 간단한 방법은 GUI 방식의 Gitinstaller를 사용하는 방법 입니다.

이 Gitinstaller는 Google Code 페이지의 다음의 사이트에서 다운로드 할 수 있습니다.

http://code.google.com/p/git-osx-installer

이외에 또 한 가지의 방법은 MacPorts(http://www.macports.org)에서 GIT의 설치본을 받아오는 방법 입니다.

여러분의 Macintosh 컴퓨터에 Macports를 설치한 상태라면, Git를 다음과 같은 명령으로 설치할 수 있습니다.

$ sudo port install git-core +svn +doc +bash_completion +gitweb

1.4.4. Windows 에서의 설치

Windows 운영체제에 GIT를 설치하는 방법은 매우 간단합니다.

msysGit 프로젝트는 Windows에서 간단하게 GIT를 인스톨할 수 있는 방법을 제공하고 있습니다.

따라서, Google의 Code 페이지로부터, Installer를 받아와 실행만 하시면 됩니다.

http://code.google.com/p/msysgit

설치가 끝나면, Linux 처럼 커맨드 라인 방식 및 Windows의 일반적인 GUI 방식 양쪽 모두를 사용할 수 있습니다.

출 처 : http://ippuu.tistory.com/125


final

변수에 사용시 : 상수로 만든다

함수에 사용시 : overriding 금지

클래스 사용시 : 상속 금지
host pc 환경
- Debian Linux / hp nc4010

1. NFS 사용을 위해서는 먼저 host pc에 NFS 서버 프로그램이 설치되어 있어야 한다.
# apt-get install nfs-common nfs-kernel-server

2. 설치 완료 후  디렉토리를 하나 생성한다.
# mkdir /nfs
# chmod 777 /nfs
# chown nobody /nfs
# chgrp nogroup /nfs

3. /etc/exports 파일을 편집한다. 다음의 내용을 추가한다.
/nfs 192.168.1.0/24(rw,no_root_squash)
(참고로 host pc의 이더넷 카드에는 192.168.1.1로 할당되어 있고, mini2440에서는 192.168.1.2로 설정 되어 있다)

4. nfs 데몬을 재시작 한다.
# /etc/init.d/nfs-kernel-server restart

5. 일단 ping을 이용하여 host pc와 mini2440 보드간 연결이 제대로 되어 있는지 확인한다.

6. mini2440 보드에 minicom으로 연결한 후 리눅스 로그인 상태에서 다음과 같은 명령을 내린다.
# mkdir /root/nfs
# mount -t nfs -o nolock 192.168.1.1:/nfs /root/nfs
별문제 없으면 연결이 왼료 될 것이다.





1. 윈도우 하이퍼터미널(Hyper Terminal) 리눅스 미니컴(Minicom)에서 RS232를 통해 mini2440 에 연결
   COM1포트, 115200bps, 데이터 8비트, 패리티 없음, 정지비트 1, 흐름제어 없음
2. 파일 전송 : Zmodem을 이용하여 파일을 전송
 - 미니컴에서 임베디드 컴퓨터에 로그인 한 후 파일 전송 프로그램인 rz 명령을 사용한다.
 - rz명령을 내린 후 ctrl + A와 Z키를 입력하여 미니컴 명령 모드로 빠져 나온다.
 - s 명령을 내린 후 프로토콜로 Zmodem을 선택하고 보낼 파일을 선택한다.
3. 교차컴파일러 설치
 호스트 컴퓨터에 타겟 컴퓨터에 맞는 컴파일러를 설치한다.
 (arm-linux-gcc)



+ Recent posts