2011年3月30日 星期三

Beagleboard xM with TI DVSDK 4_01_00_09

Beagleboard xM 跟之前的 Beagleboard有相當多的差異,除了CPU / DSP 時脈的提昇,週邊也多了Ethernet, USB Hub 及 Camera interface.
不過 Nand flash 據說是因為成本的因素而拿掉了.因此Beagleboard xM只能經由 SD card boot.

TI DVSDK 提供很完整的多媒體展示,包含Media encode / decode, OpenGL 3D demo.
接下來將試著將Beagleboard xM DVSDK 安裝至 SD card.

1.參考DVSDK FAQ
http://processors.wiki.ti.com/index.php/DVSDK_4.x_FAQ#How_to_build_and_install_DVSDK_4.01_on_BeagleBoard-xM

根據DVSDK FAQ得知所需要的必要環境是 Ubuntu 10.04. Cross compile 為 CodeSourcery ARM 2009q1

2.Download DM3730 DVSDK 4.01 from TI
http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.html
下載 dvsdk_dm3730-evm_4_01_00_09_setuplinux,大小約為1.5G.
下載時 TI 會要求帳號密碼,請自行註冊登入.注意帳號的Email 不能是yahoo之類的免費帳號.

下載完成後先變更檔案權限為可執行
$ chmod 755 dvsdk_dm3730-evm_4_01_00_09_setuplinux

執行安裝
$ ./dvsdk_dm3730-evm_4_01_00_09_setuplinux

3.Download patch script for DVSDK 4.01 to support BeagleBoard XM

http://processors.wiki.ti.com/images/5/5b/Setup-dvsdk-4-01-beaglexm-110126.zip

TI DVSDK並沒有支援Beagleboard xM,因此必須要做一些patch.
解開zip檔後會得到檔案 setup-dvsdk-4-01-beaglexm-110126.sh.
將它放在DVSDK root目錄,再依照以下內容修改 setup-dvsdk-4-01-beaglexm-110126.sh.



--- ../setup-dvsdk-4-01-beaglexm-110126.sh    2011-02-04 06:53:32.000000000 +0800
+++ setup-dvsdk-4-01-beaglexm-110126-fix.sh    2011-03-28 21:14:21.206840024 +0800
@@ -67,10 +67,10 @@
 
 # Comment out these 4 lines if you have direct internet connection
 
-PROXYHOST="foo.com"
-PROXYPORT="80"
-export http_proxy="http://${PROXYHOST}:${PROXYPORT}"
-export GIT_PROXY_COMMAND=./git-proxy.sh
+#PROXYHOST="foo.com"
+#PROXYPORT="80"
+#export http_proxy="http://${PROXYHOST}:${PROXYPORT}"
+#export GIT_PROXY_COMMAND=./git-proxy.sh
 
 # Generate git proxy command config script
 cat > git-proxy.sh <<_EOF
@@ -128,7 +128,9 @@
 
 # Apply the patches to the local repository
 for patchfile in ${XLOADPATCHESSTRIPPED} ; do
-    git am oepatches/$patchfile
+    git am --abort
+#    git am oepatches/$patchfile
+    git apply oepatches/$patchfile
 done
 
 cd ..



這個修改是為了可直接連上internet及修正 git am 所造成的 bug

4.變更權限並執行
$ chmod 755 setup-dvsdk-4-01-beaglexm-110126.sh
$ ./setup-dvsdk-4-01-beaglexm-110126.sh
這時這個script會自動去抓許多patch檔,並更新至DVSDK

5.編譯DVSDK
至DVSDK root目錄下

make clean
make all

6.安裝DVSDK 至 SD card

將SD card 連接至PC, 再來弄清楚device node為何 (用dmesg)
以我來說是 /dev/sdd

$ sudo bin/mksdboot.sh --device /dev/sdd --sdk ${PWD}
************************************************************
*         THIS WILL DELETE ALL THE DATA ON /dev/sdd        *
*                                                          *
*         WARNING! Make sure your computer does not go     *
*                  in to idle mode while this script is    *
*                  running. The script will complete,      *
*                  but your SD card may be corrupted.      *
*                                                          *
*         Press to confirm....                     *
************************************************************

unmounting device '/dev/sdd1'
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.904471 s, 1.2 MB/s
Disk /dev/sdd doesn't contain a valid partition table
Checking that no-one is using this disk right now ...
OK

Disk /dev/sdd: 1949 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
 /dev/sdd: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sdd1   *      0+      4       5-     40131    c  W95 FAT32 (LBA)
/dev/sdd2          5    1948    1944   15615180   83  Linux
/dev/sdd3          0       -       0          0    0  空
/dev/sdd4          0       -       0          0    0  空
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
Formating /dev/sdd1 ...
Formating /dev/sdd2 ...
mke2fs 1.41.11 (14-Mar-2010)
Image Name:   Execute uImage.bin
Created:      Mon Mar 28 20:31:49 2011
Image Type:   ARM Linux Script (uncompressed)
Data Size:    238 Bytes = 0.23 kB = 0.00 MB
Load Address: 0x00000000
Entry Point:  0x00000000
Contents:
   Image 0:      230 Bytes =    0 kB = 0 MB
Image Name:   Execute uImage.bin
Created:      Mon Mar 28 20:31:50 2011
Image Type:   ARM Linux Script (uncompressed)
Data Size:    289 Bytes = 0.28 kB = 0.00 MB
Load Address: 0x00000000
Entry Point:  0x00000000
Contents:
   Image 0:      281 Bytes =    0 kB = 0 MB
Select Primary display output:
 1: LCD
 2: DVI

Copying u-boot/mlo/uImage on /dev/sdd1
unmounting /dev/sdd1
Extracting filesystem on /dev/sdd2 ...
Creating matrix-gui-e symbolic link...done
unmounting /dev/sdd2
completed!
Updating FS with modified beagleboard-xM files
unmounting /dev/sdd2
Done



到這裡SD card已經準備好了

7.以SD card boot Beagleboard xM

boot成功最後會看到以下登入畫面,請以root登入,無須密碼.

Escape character is '^]'.

 _____                    _____           _         _  
|  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
|     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
|__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_| 
              |___|                    |___|           

Arago Project http://arago-project.org beagleboard-dvsdk

Arago 2010.11 beagleboard-dvsdk

login: root
Last login: Thu Jan 13 23:28:57 on pts/0

來看看一些系統基本資訊

CPU跑1G Hz

root@beagleboard-dvsdk:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 996.74
Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : OMAP3 Beagle Board
Revision        : 0020
Serial          : 0000000000000000


dsplink driver已經掛上,DSP可以使用了

root@beagleboard-dvsdk:~# lsmod
Module                  Size  Used by
sdmak                   3759  0
lpm_omap3530            6537  0
dsplinkk              124358  1 lpm_omap3530
cmemk                  21358  0
bufferclass_ti          4838  0
omaplfb                 8770  0
pvrsrvkm              129682  2 bufferclass_ti,omaplfb
ipv6                  249320  14
rtc_twl                 4263  0
rtc_core               12531  1 rtc_twl


將DVI 接頭接到 monitor 會看到 Demo 畫面,



Video encode / decode, OpenGL 3D Demo




還有一個Qt base browser



2011年3月14日 星期一

MySQL Setup

After compile & install MySQL there still something need to do.
In this case, MySQL install to /media/disk/usr/mysql
So, the $BASEDIR is /media/disk/usr/mysql

1.Create $BASEDIR/etc/my.cnf

# Example MySQL config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld daemon
# doesn't use much resources.
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
#password    = your_password
port        = 3306
socket        = /tmp/mysqld.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
user    = mysql
port        = 3306
socket        = /tmp/mysqld.sock
datadir        = /media/disk/usr/mysql/var
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
character-set-server=utf8
collation-server=utf8_general_ci


# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id    = 1

# Uncomment the following if you want to log updates
#log-bin=mysql-bin

# binary logging format - mixed recommended
#binlog_format=mixed

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /media/disk/usr/mysql/var
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /media/disk/usr/mysql/var
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

2.Create user mysql & group mysql

3.Change owner to user & group mysql
chown -R mysql:mysql /media/disk/usr/mysql/*

4.Install database
The datadir in my.cnf is the path to install database which is /media/disk/usr/mysql/var

Execute

# mysql_install_db --defaults-file=/media/disk/usr/mysql/etc/my.cnf --user=mysql

Installing MySQL system tables...
700101  0:34:10 [Warning] option 'myisam_max_extra_sort_file_size': unsigned value 2147483648 adjusted to 2147483647
OK
Filling help tables...
700101  0:34:10 [Warning] option 'myisam_max_extra_sort_file_size': unsigned value 2147483648 adjusted to 2147483647
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/media/disk/usr/mysql/bin/mysqladmin -u root password 'new-password'
/media/disk/usr/mysql/bin/mysqladmin -u root -h localhost password 'new-password'

Alternatively you can run:
/media/disk/usr/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /media/disk/usr/mysql ; /media/disk/usr/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /media/disk/usr/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /media/disk/usr/mysql/bin/mysqlbug script!

The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/

5.Setup MySQL user root password

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

# mysql -u root mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.4.2-beta Source distribution

No entry for terminal type "vt102";
using dumb terminal settings.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE user SET Password=PASSWORD('1234') where USER='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> exit
Bye

# killall -9 mysqld_safe mysqld
[2] - Killed                     bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking

6.Run MySQL server
# mysqld_safe --defaults-file=/media/disk/usr/mysql/etc/my.cnf &

7.Login MySQL

# mysql -u root -p

8.Example MySQL & php

mysql_connect.php

mysql_connect("localhost", "root", "1234") or die(mysql_error());
echo "Connected to MySQL
";
?>

mysql_select_db.php

mysql_connect("localhost", "root", "1234") or die(mysql_error());
echo "Connected to MySQL
";
mysql_select_db("test") or die(mysql_error());
echo "Connected to Database";
?>

Reference
http://amzshar.blogspot.com/2007/11/dba-mysqlsql.html