2011年4月22日 星期五

How to debug kernel startup assembly code?

arm-linux-objdump --source -C -G -l {elf or obj file}

  • -S, --source
    Intermix source code with disassembly
  • -C, --demangle[=STYLE]
    Decode mangled/processed symbol names.The STYLE, if specified, can be `auto', `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java' or `gnat'
  • -G, --stabs
    Display (in raw form) any STABS info in the file
  • -l, --line-numbersInclude line numbers and filenames in output


Tracing example:
Got following error while booting zImage/bootpImage:
## Starting application at 0x04000000 ...
Uncompressing Li done, booting t


with RVDS, CPU stops at
0000815c e1a00000 MOV r0,r0
00008160 eafffffd B 0x815c


arch/arm/boot/bootp/init.S : bootpImage first code
arch/arm/boot/compressed/head.S: zImage first code
arch/arm/kernel/head.S: Image first code

This failure occur after decompression done, therefore arch/arm/kernel/head.S and Image are suspect. But how do I know where is the source code of this "0x815c"? RVDS doesn't provide source code debug (or, can't).

Since suspect is in Image, which is created by vmlinux, we can use the above command to dump a mixed binary code and the assembly source code of vmlinux:
arm-linux-objdump --source -C -G -l arch/arm/boot/Image

/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head.S:82
bl __lookup_processor_type @ r5=procinfo r9=cpuid
c0008008: eb000055 bl c0008164 <__lookup_processor_type>
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head.S:83
movs r10, r5 @ invalid processor (r5=0)?
c000800c: e1b0a005 movs sl, r5
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head.S:84
beq __error_p @ yes, error 'p'
c0008010: 0a000051 beq c000815c <__error>
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head.S:85
bl __lookup_machine_type @ r5=machinfo
c0008014: eb00006b bl c00081c8 <__lookup_machine_type>
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head.S:86
movs r8, r5 @ invalid machine (r5=0)?
c0008018: e1b08005 movs r8, r5
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head.S:87
beq __error_a @ yes, error 'a'
c000801c: 0a00004e beq c000815c <__error>

(..............)

c000815c <__error>:
__error():
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head-common.S:142
str r3, [r0], #4
str r3, [r0], #4
str r3, [r0], #4
str r3, [r0], #4
#endif
1: mov r0, r0
c000815c: e1a00000 nop (mov r0,r0)
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head-common.S:143
b 1b
c0008160: eafffffd b c000815c <__error>

(..............)

c00081c8 <__lookup_machine_type>:
__lookup_machine_type():
/home/prj/vega_trunk/kernels/linux-2.6.35.12-cavm1/arch/arm/kernel/head-common.S:212
* Returns:
* r3, r4, r6 corrupted
* r5 = mach_info pointer in physical address space
*/



When calling __lookup_processor_type, r5(procinfo) is 0x4000000, r9(cpuid)=410fb024, return r10/r5=23fc0,
__lookup_machine_type @ r5=machinfo (23fc0), return r8/r5=0 ==> __error....

TODO: HOW does providing correct machid leads to correct result of __lookup_processor_type and __lookup_machine_type

[PATCH 3/3] Add ARM kernel debug macros for locating the boot problems quickly
https://lkml.org/lkml/2011/1/17/44

But it seems CONFIG_DEBUG_LL is not implemented since nothing printed on cns3420vb2x.

Linux启动(3)【转】
http://blogold.chinaunix.net/u3/104985/showart_2507730.html

ARM Linux Kernel Boot Requirements
http://www.arm.linux.org.uk/developer/booting.php
3. Detect the machine type

Existing boot loaders: OPTIONAL
New boot loaders: MANDATORY

The boot loader should detect the machine type its running on by some method. Whether this is a hard coded value or some algorithm that looks at the connected hardware is beyond the scope of this document. The boot loader must ultimately be able to provide a MACH_TYPE_xxx value to the kernel. (see linux/arch/arm/tools/mach-types).
(..................)

* CPU register settings
o r0 = 0.
o r1 = machine type number discovered in (3) above.
o r2 = physical address of tagged list in system RAM.




Apply any of following to fix this issue:
  1. hack arch/arm/boot/compressed/head.S:
    +ldr r7,=0xad8
  2. add arch/arm/boot/compressed/head-cns3xxx.S like head-sa1100.S did.
  3. hack u-boot do_go_exec(common/cmd_boot.c) to pass machid like do_bootm_linux(lib_arm/bootm.c)
    return entry (0, machid);
  4. TODO: How does 2.6.38 fixed this issue??


2011年4月21日 星期四

GLIBC backward compatibility

glibc backward compatibility
http://www.groupsrv.com/linux/about58413.html

Is there any way I can have two version of glib running on my machine at the same time. Ideally, I would like to have my current 2.3.2
Sure - no problem. Use LD_LIBRARY_PATH in a wrapper script. But I think you'll find that the later glibc works fine for executables compiled against an earlier glibc, since symbols are individually versioned!


update glibc 2.5 -> 2.7
http://forums.gentoo.org/viewtopic-t-645593-start-0.html
if you downgrade a glibc version, then you need to recompile your system. If you upgrade your glibc version, then you don't need to recompile because the new version is compatible with your files compiled by the old version.
(...................)
After upgrading glibc, you have to recompile the whole system.
No. Not anymore. Not since quite some time ago (2.3-2.4 glibc, about) - and even then, a revdep-rebuild was the only thing -strictly- required.


The GNU C Library With Versioned Interface
ftp://ftp.kernel.org/pub/software/libs/glibc/hjl/compat/index.html
The current GNU C library provides the run-time backward compatibility. That means executables and shared libraries built against the previous versions of glibc will continue to work with the current shared glibc, libc.so. This functionality is implemented with the symbol versioning in libc.so. This work is based on the effort from Eric Youngdale.

But the run-time compatibility is not enough for the Independent Software Vendors (ISVs). Many software applications may come with not only executables and shared libraries, but also header files, regular object files and archives which may be used to develop softwares for the application. Since the new version of glibc may not provide the compile-time nor link-time compatibility, the software applications from ISVs built against the previous versions of glibc may not be compatible with the new version of glibc if they have header files, regular object files or archives which reference the interfaces updated in the new glibc. One such a example is the problem of Oracle 8i under glibc 2.2. It may not be the only software package having similar problems.

One way to solve this compile-time/link-time compatibility problem is for ISVs to recompile their applications against the new version of glibc. But it may not be practical for all ISVs. ISVs usually provide their software applications on more than one platform. Their applications may be very complex. Porting their applications to a new version of glibc may take the same long, involved process as porting to a new platform since it not only needs to recompile and re-test, but also the new glibc may require other changes in the system, like new kernel. Also ISVs have to make decision if the want to support more than one version of glibc and which version of glibc they want to support. All of these may not something every ISV wants to endure. It may not be very helpful for more ISVs to develop/port their applications for Linux.



Linux compatibility
http://www.vsni.co.uk/downloads/asreml/version-2/linux-compatibility/
Platform Linux kernel GLIBC Motif
32-bit Red Hat 7.1 2.4.2-2 2.2.2 2.1
32-bit Red Hat 9.1


32-bit Fedora Core 3 2.6.9-1.667 2.3.3 3.0.2
64-bit Fedora Core 3 2.6.9-1.667 2.3.3 3.0.2
64-bit Fedora Core 6 2.6.22.1-32.fc6 2.5-18.fc6 4.0.0


(......................)

GLIBC

GLIBC (or glibc) is the GNU C runtime library. It is backward compatible, in that a program built on a system using any particular GLIBC version will also execute on a system with a later version installed. However, it is not forward compatible, programs will not execute if only an earlier version is found, leading to messages like: ASReml: /lib/libc.so.6: version `GLIBC_2.3' not found (required by asreml200ag) If you get this message


Not related.... :)
GLIBC SUCKS
http://www.galexander.org/glibc.html

booting with jffs2

  1. Add "root=/dev/mtdblock3 rootfstype=jffs2 " to CONFIG_CMDLINE, or to u-boot bootargs if uImage is used, and enable following option:
    File systems --->
    [*] Miscellaneous filesystems --->
    <*> Journalling Flash File System v2 (JFFS2) support
    (0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
    [*] JFFS2 write-buffering support
  2. Make jffs2 with:
    mkfs.jffs2 -d $(TARGET_ROOTFS_DIR) -o $(JFFS2_NAME) -e 128
    -e is the erase size, should be set to flash's block size.
  3. write the result $(JFFS2_NAME) to flash


Freerunner booting from SD
http://mkl-note.blogspot.com/2008/09/freerunner-booting-from-sd.html
Mounting the JFFS2 image on a loop back device (Block Memory MTD Emulation)
rootfs=<rootfs.jffs2>
mountpoint=jffsmountpoint;
export loop=$(losetup -f);
losetup $loop $rootfs;
modprobe block2mtd block2mtd=$loop,131072;
modprobe jffs2;
modprobe mtdblock;
mkdir $mountpoint -p;
mount -t jffs2 -o ro /dev/mtdblock0 $mountpoint;


在pc上製作jffs2 image及mount jffs2在loop back上
http://martin-yang.blogspot.com/2007/04/pcjffs2-imagemount-jffs2loop-back.html
modprobe mtdcore
modprobe jffs2
modprobe mtdram
modprobe mtdchar
modprobe mtdblock
確認以上modules會產生/dev/mtd0 及/mtd/mtdblock0檔案
dd if=/jffs2.img of=/dev/mtd0
mount /dev/mtdblock0 /mnt

u-boot boot uImage with ramdisk

CNS3420 VB v2.1, 2.6.38, CodeSourcery glibc arm-2009q1
* the u-boot didn't enable CONFIG_CMDLINE_TAG until v1.1; and v1.1 didn't enable CONFIG_INITRD_TAG, i.e. one have to enable them and build u-boot from source.

  1. bootargs or CONFIG_CMDLINE should have root=/dev/ram0
  2. u-boot enable CONFIG_INITRD_TAG
  3. kernel config should have:
    CONFIG_BLK_DEV_INITRD=y
    CONFIG_BLK_DEV_RAM=y
  4. mkimage uramdisk.img
    mkimage -A arm -O linux -T ramdisk -C none -a 0x3000000 -n "ramdisk" -d ramdisk.img.gz u-boot-ramdisk.img
  5. transfer uImage and uramdisk.img to RAM
  6. bootm 0x_addr_of_uImage 0x_addr_of_uramdisk_img
    set initrd_start 0x6000000;
    set bootcmd 'tftp $(ramaddr) $(kfile);tftp $(initrd_start) uramdisk.img;bootm $(ramaddr) $(initrd_start)';
    set bootargs 'root=/dev/ram0 rw init=/linuxrc mem=256M console=ttyS0,38400 lpj=4188160 user_debug=31 console=tty0 rootwait';
    Some source mentioned "initrd=0x3000000 ramdisk_size=40960": initrd doesn't exist in 2.6.38. ramdisk_size do, it is the size of ramdisk, if actual ramdisk size is larger than configured, the content get trimmed, so better leave it alone.


How to extract the ramdisk content from uboot format ramdisk image
http://qustion1234.blogspot.com/2009/09/how-to-extract-ramdisk-content-from.html

假設有一包ramdisk "initrd.gz",使用u-boot下的mkimage建立uboot format ramdisk image (ramdisk-uboot.img)在原本的ramdisk image前加64 bytes檔頭資訊:
tools/mkimage -A arm -O linux -T ramdisk -C none -a 0x20800000 -n "ramdisk" -d initrd.gz ramdisk-uboot.img
可以用下面的指令 extract the ramdisk content (init.gz) from uboot format ramdisk image
dd if=ramdisk-uboot.img of=ramdisk.img.gz bs=1 skip=64

INITRD: 0x05000040+0x009aad81 extends beyond physical memory - disabling initrd

2011年4月16日 星期六

Building native compiler with cross compiler

gcc-v4.3.3/gcc-v4.4.1

ld: crti.o: No such file: No such file or directory
FIX: I didn't copy the library/header files in configured sysroot, or sysroot configured is not correct. The library/header files are located in the directory of cross compiler, e.g. arm-2009q1/arm-none-linux-gnueabi/libc/ for arm-2009q1 (glibc).

gcc: error trying to exec 'cc1': execvp: No such file or directory
FIX: libgcc configure will looks for gcc/ar/nm/... in directory specified by --with-build-time-tools. In my case, the value is incorrect.

/opt/codesourcery/arm-none-linux-gnueabi/libc/usr/lib/crt1.o: In function `_start':
(.text+0x30): undefined reference to `__libc_csu_fini'
/opt/codesourcery/arm-none-linux-gnueabi/libc/usr/lib/crt1.o: In function `_start':
(.text+0x38): undefined reference to `__libc_csu_init'
collect2: ld returned 1 exit status
FIX: In my case, the library is striped...

VI: how to substitute with newline

vi \ ex : Substitute with newline?
http://www.computing.net/answers/unix/vi-ex-substitute-with-newline/6485.html

:X,Ys/ /<ctrl>v<ctrl>m/g

2011年4月14日 星期四

ld: crti.o: No such file: No such file or directory

ld: crti.o: No such file: No such file or directory


Re: crt1.o: No such file: No such file or directory
http://gcc.gnu.org/ml/gcc-help/2005-10/msg00125.html

Did you notice that the 'specs' for the native GCC was produced with
the crosscompiler? This is the most common reason for a cross-made
native GCC to "not work" ! So just replace the :
[root@61 tmp]# gcc -v test.c
Reading specs from /usr/bin/../lib/gcc/powerpc-405-linux-gnu/3.4.4/specs
with one produced with the new GCC on the native platform via the:
gcc -dumpspecs > specs


Re: crti.o: No such file: No such file or directory
http://www.cygwin.com/ml/crossgcc/2006-12/msg00063.html
i have pass this error when i add --disable-shared for gcc configure.

2011年4月13日 星期三

tcl/tk/expect

Building tcl-8.5.9

fixstrtod.o: In function `fixstrtod':
fixstrtod.c:(.text+0x0): multiple definition of `fixstrtod'
strtod.o:strtod.c:(.text+0x0): first defined here
collect2: ld returned 1 exit status
Fixed by:
buildroot-2010.05/package/tcl/tcl-8.4.19-strtod.patch

diff --git a/tcl8.5.9/compat/strtod.c b/tcl8.5.9/compat/strt
index 9e494b1..c79aeaf 100644
--- a/tcl8.5.9/compat/strtod.c
+++ b/tcl8.5.9/compat/strtod.c
@@ -23,6 +23,8 @@
#define NULL 0
#endif

+#undef strtod
+
static int maxExponent = 511; /* Largest possible base 10 exponent. Any
* exponent larger than this will already
* produce underflow or overflow, so there's


Installing message catalogs
./tclsh: 1: Syntax error: word unexpected (expecting ")")
make[4]: *** [install-msgs] Error 2
Fixed by:
diff --git a/tcl8.5.9/unix/Makefile.in b/tcl8.5.9/unix/Makef
index 183dbb6..6154698 100644
--- a/tcl8.5.9/unix/Makefile.in
+++ b/tcl8.5.9/unix/Makefile.in
@@ -809,14 +809,14 @@ install-tzdata: ${TCL_EXE}
@echo "Installing time zone data"
@@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIB
TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
- ./${TCL_EXE} $(TOOL_DIR)/installData.tcl \
+ ${TCL_EXE} $(TOOL_DIR)/installData.tcl \
$(TOP_DIR)/library/tzdata "$(SCRIPT_INSTALL_DIR)"/tzdata

install-msgs: ${TCL_EXE}
@echo "Installing message catalogs"
@@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIB
TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
- ./${TCL_EXE} $(TOOL_DIR)/installData.tcl \
+ ${TCL_EXE} $(TOOL_DIR)/installData.tcl \
$(TOP_DIR)/library/msgs "$(SCRIPT_INSTALL_DIR)"/msgs

install-doc: doc


misleading error syntax error: word unexpected (expecting ")"
http://gaoithe.blogspot.com/2009/08/misleading-error-syntax-error-word.html

Building Expect
configure: error: Expect can't be cross compiled
Huh?? OMG....
If expect have to be built with native compiler, implies tcl/tk needs to be build natively, since expect need tcl source....

Re: TCL working, now an issue with Expect
http://comments.gmane.org/gmane.linux.distributions.gumstix.general/4566
I was able to google one newgroup posting on the
subject. Here is an excerpt of that post:

"Expect can't be cross compiled until someone takes
pain to write default actions for each AC_TRY_RUN
which would do anything sensible rather than just
complain.


Cross-compiling expect
https://linuxlink.timesys.com/cross_compiling_expect



Tcl Developer Site
http://www.tcl.tk/

How to Compile Tcl
http://www.tcl.tk/doc/howto/compile.html

The Linux Tcl and Tk HOWTO
http://tldp.org/HOWTO/TclTk-HOWTO.html

Tcl 语法 - Linux - Linux教程
http://linux.sheup.com/linux/linux5707.htm

Dai : 程式設計心得: 1.Tcl/Tk 快速上手
http://blog.got7.org/2009/06/1tcltk.html


Expect
http://www.nist.gov/el/msid/expect.cfm

Expect | Download Expect software for free at SourceForge.net
http://sourceforge.net/projects/expect/

linux下编译安装expect at Validba'S Home
http://www.validba.net/2010/03/linux%E4%B8%8B%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85expect/

瘋狂帽客's Blog: Tcl + expect 簡單實作
http://go-linux.blogspot.com/2008/07/tcl-expect.html

2011年4月12日 星期二

Booting target Linux device with NFS

  1. apt-get install nfs-kernel-server
  2. vim /etc/exports
    /path/to/your/NFS/rootfs *(rw,no_root_squash,async)
  3. exportfs -a
  4. Modify kernel config for target:
    [*] Networking support --->
    Networking options --->
    [*] IP: kernel level autoconfiguration
    File systems --->
    [*] Network File Systems --->
    <*> NFS client support
    [*] NFS client support for NFS version 3
    [*] Root file system on NFS
  5. Change CONFIG_CMDLINE to:
    CONFIG_CMDLINE="root=/dev/nfs rw nfsroot=10.2.1.2:/data/nfs ip=10.2.1.1:10.2.1.2::255.255.0.0::eth2:off init=/linuxrc mem=256M console=ttyS0,38400"
    and boot with zImage. Or set u-boot bootargs:
    set bootargs root=/dev/nfs rw nfsroot=10.2.1.2:/data/nfs ip=10.2.1.1:10.2.1.2::255.255.0.0::eth2:off init=/linuxrc mem=256M console=ttyS0,38400;save
    and boot with uImage

2011年4月10日 星期日

不懂魔獸世界 你怎麼當主管 (Total Engagement) 筆記

作者序 誰能讓工作像遊戲,一定勝出

給玩家一個像遊戲的工作

前言 工作與遊戲勢必結合
職場發展的未來走向一定是:員工自動自發全心投入,不在單純接受老闆的命令
一旦員工位爭取績效工作,組織會變得更加分權

(工作的問題)有些工作太過容易,有些工作則過於困難
工作和玩家的付費關係,可依程度的不同,區分為下列三種:
  1. 有不請自來的玩家
  2. 在沒有自覺的狀況下,從「偷竊工作」到願意「租用工作」,達成付錢的玩家
  3. 「遊戲」實在太爛,所以你還得付錢「購買玩家來工作」,懇求玩家玩遊戲
第一章 工作不能和「好玩」作對
和「好玩」作對,沒有好結果
我們無法清楚切割:情感與理智、好玩事和正經事,常常指的是同一件事。
人覺得興奮的時候,會用腦袋更努力工作


第二章 遊戲能解決的上班問題
人的工作內容可以分成三大類:
  1. 轉換類 (transformational)
    如:提煉原料
  2. 交易類 (transactional)
    與他人互動機會較多,不過互動的模式很固定,固定到最後可以完全自動化
  3. 內隱類 (tacit)
    定義上沒有那麼清楚,通常是指需要內隱知識與經驗累積的工作

激勵員工績效成長不外乎三大因素:
  1. 有目的的 (Purpose)
  2. 有意義 (Meaning)
  3. 分享結果 (consequence)
成功的遊戲有恰到好處的學習進度,讓玩家不會因為覺得太難而沮喪放棄,當然也不會太簡單,沒有挑戰性。玩家在遊戲中可以一直得到回饋,並了解自己的進度。

複雜適應系統(complex adaptive system): 一個由單獨個體組成的系統,其中的個體擁有一些行動的自由,是我們不能全然預測到他們的行動,而他們的行動是互相影響的。

「適應」意味著這些個體和承載他們的系統共同演變。有時變好,有時變壞。我們不需要為個體行為細節進行預測,而是(以正式或非正式途徑,透過個體)來影響整個系統


第三章 工作變好玩的十種方式
  1. 虛擬角色 能表現真實自我
  2. 虛擬3D環境 幫你適應
  3. 故事 幫助我們進入狀況
  4. 即時反饋:玩家需要、員工要不到
  5. 給你最在乎的—名聲、評價、等級
    這套資料完整、公開描述海倫在遊戲中的能力、本領及經驗。虛擬世界的生活遠比真實來的透明,因為遊戲設計強調資訊,玩家也確信資訊的價值。
    如果你無法判別哪個人能夠執行哪種任務,就難以合作或指導,遊戲中是如此,真實生活中也是一樣
  6. 虛擬貨幣:企業不懂的強大管理工具
    • 使玩家更信任體制
      計分機制是否有效是成敗關鍵
    • 虛幣把個人和團隊目標合一
      如果玩家不能優先考量團隊的目標,就很難跟他合作或帶領他;玩家願意去做有意團隊的事,合作及領導就簡單多了。我們要強調的是,虛擬貨幣就是這種有效激勵,遊戲如果沒有建立以虛擬貨幣創造的經濟,其他要素會變得無關緊要。
  7. 遊戲的競爭,規則清楚且強制,公司裡呢?
    遊戲玩家可以自訂規則,員工呢?
  8. 玩家都是自願加入團隊,員工能嗎?
  9. 遊戲的同步溝通系統,企業快學吧
  10. 玩家喜歡這樣的時間壓力
    很快就可以再來一次的機會

第四章 虛擬角色幫我發揮真正實力

第五章 給你假貨幣 賺到真效率
虛擬通貨膨脹(mudflation)
鼓勵工作場合裡的經濟行為是改善工作無趣的方法之一

第六章 建立團隊 你得以遊戲為師

[wiki] DKP (Dragon Kill Point)
http://en.wikipedia.org/wiki/Dragon_kill_points

有很多方式可以得到DKP,例如;在公會戰鬥活動所花費的時間、在遊戲中的優秀表現(攻擊火力、治療隊友的效率、會讓他贏得點數),甚至活動開始前的準備工作(如果收集了這次活動中必備藥水的製造材料,也可以多拿點數)

DKP點數系統是遊戲設計者為了「合作」而找到的創新想法
DKP系統看成一個小型的斯人貨幣發行體系
總點數(相當於鈔票總發行量)也不停累積,有時會產生通貨膨脹
DKP系統並不屬於遊戲程式本身,而是由玩家所撰寫的修正(mods)


員工清楚地知道,他們所提供的知識對公司有益;但卻很少人知道自己有何好處。
有些員工除了隱瞞他們所擁有的資訊外,他們也會隱瞞得知資訊的過程,這種作法對團隊合作來說打擊更大。

顯性知識 比較正式且公開。這類知識比較有正式規則、容易紀錄、且對全體開放,通常是知識管理系統中的主流。
隱性知識 不是正式收集來的,而是透過經驗獲得。這類知識一般未經過編輯,重視的是如何做好事情,對於達成員工個人目標非常有用

公司會應位隱性知識轉化為顯性知識而得到利益
困難:
  1. 你很難去發現、獎賞那些提供隱性知識的人
  2. 個人會擔心提供知識後影響到他的權利

如何協調團隊的知識,特別是那些團隊所擁有、如何正確最好工作的隱性知識,往往比團隊合作的結果重要

  • 人很難改,硬體環境可以改
    遊戲環境 比起 玩家 更為重要
    改變遊戲,而不是改變人
    持續更新且透明化的名譽系統
  • 建立點數制度,促成自動合作
  • 供應便宜、大量且有趣的資訊
  • 隱性知識慢慢公開
  • 點數:最透明的績效紀錄
  • 獎勵就是:大家都知道我很行
  • 遊戲團體總能快速招募人才
    在遊戲中,面試通常意味著火力測試
    當面前就有敵人時,玩家沒空紙上談兵
    打王行動結束後,大家會論壇上對應徵者的表現發表意見,他們將投票的結果製表,決定是否接受新人加入

三種不同模式的網路:
  1. 廣播式網路(broadcast networks):當你需要多元看法時
    從廣播式網路中所收集來的群眾智慧沒有任何保證,群眾也會犯下致命的錯誤。但具有多樣性的團體比起那些只知道同樣事情的單一性團體,在看待事物的觀點上較多元
  2. 交換式網路(transaction networks):當你想要大家都能互相交談時
  3. 加盟網路(affiliation networks):讓幾萬個專家幫我

第七章 虛擬老大 真有領袖氣質
史隆模型(Sloan Model) 裡有效領導的核心特質
  1. 分析現況(sense-making)
  2. 協調利益(relating)
    • 詢問(inquiry): 傾聽、了解他人想法,並在思考過程中將自己主觀的意見抽離出來
    • 倡導(advocacy): 有效表達自己的意見,同時以這些意見所帶來的好處當主張,去說服別人
  3. 形成願景(visioning)
    故事不夠力,你就得有想像力
    領導者首先必須創造出引人入勝的願景來激勵團員,進而建構出之後的行動
    沒人告訴你該做啥,想像力變重要
  4. 嘗試創新(inventing)
    設計和發明新的獎勵措施

帶團隊、代工會,全憑實力
不管哪種遊戲,領導風格都是很快成形的
領導力並不是一種特徵,而是一種任務:幫助快速建立團隊

試試看無妨,未來的老大
遊戲裡的明星,在現實生活中都是不可能晉升管理階層的人,連他們自己也不預期自己能成為領導者
遊戲中要嘗試擔任領導者十分容易,不需要長時間的投入,偶爾試試也不必承擔太多風險
遊戲中的領導者通常都是自願加入幫忙的:團體出了問題,某位有領導能力的玩家跳出來,帶領大家走出困境
如果工作團體更具有活力,可以允許在發展中不斷地變更,甚至允許毛遂自薦,那會如何呢?

老大不是天生的
遊戲的快速節奏,讓玩家以較輕鬆的態度看待風險。在遊戲中,嘗試與犯錯變成一種更好的戰略,偶而犯錯變成意料中的事
玩家對於評估情況不明朗的利害關係很有經驗,有時他們在遊戲禮遇到狀況的複雜性還遠超過真實中的情況,這類經驗有助於提升真實商場上的領導能力

未來就從遊戲這兒開始
遊戲玩家認為,人之所以成為領導者,環境因素往往大於人的因素,既不單靠天生,也不是單靠訓練
用幾種方法可以促進更有效的領導
  • 定量的獎勵,特別是以虛擬貨幣呈現的型式
    遊戲會仔細紀錄每個人的行動,讓公會可以將其獎賞系統和資料緊密結合
  • 讓重要且整理過的資訊透明化
    大部分的數據都由電腦自動追蹤,一切透明化
    這些資訊讓領導變得更容易,不過相對的,被領導一樣變得容易
  • 透過各種專門通訊頻道溝通

第八章 真的懂「玩」工作如遊戲
玩樂是力量,競爭讓我們處於最佳狀態
玩樂幫你成長
玩樂幫你認同群體
玩樂玩出想像力
玩樂幫你搞懂天意
機率型遊戲讓成功與否的關鍵變成了運氣,而非玩家的技能;但這對工作並非沒有幫助,因為它讓玩家產生持續玩下去的動力,也造成了很大的刺激感
儘管是隨機發生,但是如果結果符合玩家的期望,他們都會認為這是自己努力的成果

玩樂就只是單純的快樂
進入「流暢」狀態,工作像遊戲
流暢(flow) 我們認為最享受的時刻,就是我們努力往一個目標邁進,而且感覺到自己可以做到的時候。投入大量的心力只為了樂趣,這種感覺本身就令人感到愉悅
這描述了一種全心投入的狀態
流暢狀態的特色:
  • 每個階段都有明確的目標
  • 立即的反饋有助流暢
  • 在困難和辦得到之間的平衡
  • 將行動和意識合而為一
  • 想流暢,得先排除令人分心的事物
  • 感到流暢時,不擔心失敗
  • 感到流暢的人缺乏自我意識
  • 流暢時,缺乏時間感知
  • 享受過程,不想結束
玩樂幫你情緒化:這工作真刺激,來玩吧!
沒什麼方法比思考和情緒同時運作更好、更容易激發出人的最佳表現
7個遊戲時接受刺激的特徵
  1. 不停在變,才算是刺激
  2. 製造事件,你才能造成刺激
  3. 要正面收穫,別負面刺激
  4. 如何刺激可讓人想改變現狀
    當人處於高度刺激(或極度無聊)的狀況時,會有想要改變現狀的衝動
    工作時也需要能幫助暫時逃離無聊、焦慮的工具
  5. 遊戲幫你學會處理負面情緒
  6. 情緒刺激有住學習與記憶
  7. 刺激會轉移
    情緒系統與思考系統的共同活化成度越來越高,資訊不但比較容易記憶,我們思考到其他相似的經驗時也能提供幫助。學習科學家將這種情況稱之為移轉(transfer)

第九章 搞懂遊戲 才能善用遊戲
第十章 好用的東西 通常有點危險
名聲、評價、等級:一切透明,這樣好嗎?
人類在承受高度心理壓力時,績效改善了;但是壓力一直提高,過了臨界點之後,績效便快速下滑

結語 關於工作 你要開始這樣玩

2011年4月9日 星期六

華得福

慢學
要求家長不要讓小孩看電視,學校也到中學階段才介紹電腦
亞洲第一所華德福小學,就位於宜蘭冬山鄉的慈心華德福教育實驗學校,屬於公辦民營
點燃每個小孩與生俱有的學習熱情,並終生持續
學習是要對自己負責,而不是與別人比較
雖然華德福教育完全不以升學為目的,也不注重學業成績。但當學生具有了學習的能力,也熱愛學習,各方面表現都不會是問題
培養學生責任感是華德福教育很重視的一環
英國麥克候學校老師羅拉認為,「在華德福教育下,學生認識到自己是整體的一個部分,是大自然中的一部分。個人對群體、對大自然負有責任。」在加拿大一項對學生道德判斷所做的測試裡,華德福學生得分遠高於公立高中與教會學校。



[文章分享]華德福教育的迷思 /作者:黃曉星。
http://www.wretch.cc/blog/shwc/27655428




全球成長最快的教育體系─華德福
http://parenting.cw.com.tw/web/docDetail.do?docId=1021

台灣華德福運動 - 首頁
http://wmit.tw/

華德福教育台北促進會
http://tw.myblog.yahoo.com/waldorf-erziehung/

台中市人智哲學發展學會
http://waldorf.org.tw/index.html




宜蘭

[公辦民營 幼兒園 小學 國中] 慈心華德福教育實驗學校
http://www.waldorf.ilc.edu.tw/
宜蘭縣冬山鄉香和村照安路257號
高中有計劃發展

[高中] 碁石華德福高中自學園
http://tw.myblog.yahoo.com/bridge-studio/article?mid=-2&next=2520&l=a&fid=64
2009年8月23日,碁石華德福高中自學園舉行開學典禮
自學園地址:島嶼社群支持生機互動農場
宜蘭縣五結鄉復興中路10號


桃園

[幼兒園] 大新華德福幼兒園
http://blog.yam.com/user/waldorf2.html
桃園縣私立大新華德福幼兒學校
住址:桃園縣八德市永忠街11巷2號

[縣立 國小 國中] 桃園縣立仁美國中附設華德福國中小
http://waldorfty.blogspot.com/



台中

[幼兒園] 娃得福托兒所 Waldorf Kindergarten
http://waldorf.org.tw/waldorf/index.html
台中市私立娃得福托兒所成立於民國八十五年
台中西區精誠六街36號

[幼兒園] 光目華德福幼稚園 Waldorf Taipei - 首頁
http://waldorftaipei.org/
台北市大安區延吉街241巷2弄11號1~2樓

[小學 國中] 豐樂園‧豐樂華德福實驗教育機構 >2011.01.24~29冬令營招生 - Yahoo!奇摩部落格
http://tw.myblog.yahoo.com/fengle-school2009/
40877台中市南屯區永春東一路597號

[幼兒園 小學] 善美真 華德福教育 東海園
http://waldorf-gbt.org.tw/kidhome.html
台中市西屯區中港路三段256號

[小學] 台中市磊川華德福實驗教育學校
http://www.leichuan.tc.edu.tw/
91年7月1日,正式承租台中市南區忠孝路1號為學苑校址,佔地近2000坪,建物約800坪。
91年9月2日,磊川華德福學苑開學日。
92年8月29日,由市府更名為「台中市磊川華德福實驗小學」。
96年5月,承租北屯區松竹五路校地。
97年2月22日,學校搬遷至北屯區松竹五路233號。
97年4月3日,市府更改學校校名為「台中市磊川華德福教育機構」。




台北

[小學] 台北史代納學校---華德福學園
http://taipeisteinerschool.blogspot.com/
台北史代納學校—華德福學園
北市杭州南路二段61巷25之2號一樓 (近金華街70號旁的巷子)



新竹

[幼兒園 小學] 小陽光華德福親子部落
http://sunnygarden2006.pixnet.net/blog
新竹柯子湖華德福實驗學校(共學團體)
新竹小陽光華德福幼兒園:小陽光目前尚無官方網站

2011年4月4日 星期一

防蚊樹

請救救防蚊樹!!
http://www.plant-seeds.idv.tw/showthread.php?p=1926414

天竺葵
http://www.hljh.tcc.edu.tw/teach/%E6%A0%A1%E5%9C%92%E6%A4%8D%E7%89%A9/%E5%A4%A9%E7%AB%BA%E8%91%B5/%E5%A4%A9%E7%AB%BA%E8%91%B5.htm

‧中文名稱: 天竺葵 更多天竺葵
‧英文名稱: Fish Geranium,Zonal Geranium,House Geranium,Horseshoe Geranium
‧學 名: Pelargonium x hortorum Bailey
‧科 名: 牻牛兒苗科(Geraniaceae)天竺葵屬(Pelargonium)
‧別名: 洋葵 、石蠟紅、月月紅、懶人花、臭葉海棠、入臘紅、日爛紅
‧原產地: 原產南非好望角附近,世界各地普遍栽培。
‧分布: 廣泛種植於各地庭園、公園及校園內。
‧用 途: 1. 庭植作為觀賞用:鮮麗的天竺葵,圓球形繖型花序,它是窗台花槽最佳妝點的草花,適合盆花、花壇的栽植,除了花朵外,雙色或鑲邊的的葉子也具有觀賞價值。 2.藥用:天竺葵是一種好的平衡劑,能疏解壓力、平衡身心情緒、可安撫沮喪、焦慮並能提振身心,對荷爾蒙也有很大的調節功效,其植株還散發獨特的「氣味」,有人稱之為「異香」,因為富含芳香油,可提煉香料,還可作為藥材。性味:花:苦、澀、涼。效用:花:清熱消炎。治中耳炎。
‧莖: 幼株為肉質草本,老株半木質化;莖直立或呈匍匐狀─蔓性,基部木質化,莖肉質;全株均有一股獨特的味道。
‧葉: 葉子通常是互生的,掌狀淺裂或羽狀淺裂,一般具有長葉柄,有的種類葉上有深淺紋路,葉片為圓形、腎形或扇形;葉緣有波浪型或不規則鋸齒,葉色有綠葉、黃葉和斑葉。
‧花: 每朵花有花瓣與萼片各 5 枚,單瓣或重瓣,邊緣平滑或呈波浪狀繖形花序;花聚集成傘狀,稱為「假繖狀花序」,花的形狀從星狀到漏斗狀有各種形狀,花色有白色、粉紅色、紅色、橘紅色、紫色直到甚至近似黑色,各種都有;四季都能開花,以春季最盛。
‧果: 果實為蒴果。
‧特徵: 天竺葵為牻牛兒苗科天竺葵屬多年生的草花,包括約 230 種多年生肉質、亞灌木或灌木植物。天竺葵幼株為肉質草本,老株半木質化;莖直立或呈匍匐狀(蔓性),基部木質化,莖肉質;全株均有一股獨特的味道。葉子通常是互生的,掌狀淺裂或羽狀淺裂,一般具有長葉柄,有的種類葉上有深淺紋路,葉片為圓形、腎形或扇形;葉緣有波浪型或不規則鋸齒,葉色有綠葉、黃葉和斑葉。每朵花有花瓣與萼片各 5 枚,單瓣或重瓣,邊緣平滑或呈波浪狀繖形花序;花聚集成傘狀,稱為「假繖狀花序」,花的形狀從星狀到漏斗狀有各種形狀,花色有白色、粉紅色、紅色、橘紅色、紫色直到甚至近似黑色,各種都有;四季都能開花,以春季最盛。果實為蒴果。天竺葵在西方是很好的裝飾窗臺的花卉,在歐洲大陸,如德奧等國,尤?常見。檸檬天竺葵常與防蚊樹混淆,但同屬牻牛兒苗科。


防蚊樹
http://www.tsherb.com.tw/indexDataDetail.php?herb_id=15

中文名:防蚊樹
英文名:Citrosa Mosquito Fighter
其他名:防蚊草 科 名: 牻牛兒苗科
屬 名: Pelargonium
種 名: sp.
品種名:
原產地:園藝栽培種
氣候帶:熱帶至暖溫帶
棲 地:乾燥或排水良好的向陽地
類 型:多年生草本植物
外觀描述:
具肥厚多汁的肉質莖,葉互生,葉形掌狀二回深裂,表面被覆稀疏絨毛,葉色較淺綠,未見過其
類似植物鑑別特徵:
防蚊樹與檸檬天竺葵很像,防蚊樹的葉較大型顏色較淺綠,味道較嗆。
使用部位:莖、葉、精油
使用區分:驅蟲、抗茵、觀賞、精油
用途與近緣種用途區分:目前只知道可以用於忌避作用,種在家中的庭院或陽台,可降低蚊蟲的密度。與各種食用的芳香天竺葵是近緣種,是否也可以用於食品則有待研究。
日照: 全,半
水分: 少
中高海拔
花 期:
定植期: 春,夏,秋
栽培概述:因為植株形態類似多肉植物,所以較不耐濕,夏季雨量太大時要避免積水,或受雨水過度淋洗。最好種植於南向或東向的陽台,既可避免雨水直接淋洗又有充足的陽光。也可以在透明的遮雨棚下栽培。

栽培概述:因為植株形態類似多肉植物,所以較不耐濕,夏季雨量太大時要避免積水,或受雨水過度淋洗。夏季最好種植於東向的陽台,既可避免雨水直接淋洗又有適量的陽光。也可以在50%遮蔭的遮雨棚下栽培,冬季則最好移到全日照栽培。在春末時記得要修剪枝條,讓植株矮化並將過多的老枝葉剪除,以利通風。防蚊樹是很耐旱的植物,夏季要限制給水,使其呈現半休眠狀態才能安全度過夏季。

低海拔
花 期:
定植期: 春,秋,冬
栽培概述:因為植株形態類似多肉植物,所以較不耐濕,夏季雨量太大時要避免積水,或受雨水過度淋洗。夏季最好種植於東向的陽台,既可避免雨水直接淋洗又有適量的陽光。也可以在50%遮蔭的遮雨棚下栽培,冬季則最好移到全日照栽培。在春末時記得要修剪枝條,讓植株矮化並將過多的老枝葉剪除,以利通風。防蚊樹是很耐旱的植物,夏季要限制給水,使其呈現半休眠狀態才能安全度過夏季。

防蚊樹真的防蚊子
http://www.gmiddle.net/myhome/space.php?uid=696&do=blog&id=7296
防蚊樹如何繁殖?

答:防蚊樹是屬於戶外植物,是頗為耐陰的植栽,所以種在室內靠門窗處是可以的;防蚊樹也相當好照顧,一周澆透一次就可,如果葉片有缺水蜷曲情形,再把土壤澆到濕透就可以,防蚊樹有很好插枝繁殖的特性,在防蚊植物中是受歡迎的一種。

防蚊樹插枝繁殖法的過程操作還算簡單,植株幼苗成長的也相當快速,插枝的方法是,首先選擇枝葉健康的植株,挑選莖節較短的幼嫩枝葉,以園藝專用剪刀斜斜地剪下約10至15公分的枝條,將剪下的枝條除去下半部的葉片,然後浸泡在水中約半天,讓枝條吸飽水份,再將枝條插入溼潤的盆子土壤內,把盆栽放到半日曬的地方避免水分乾掉,這樣就可以進行繁殖,您試看看。

防蚊樹開花囉!!!還長了小小孩~~~~ 
http://www.tbg.org.tw/tbgweb/cgi-bin/topic.cgi?forum=33&topic=1680