[ת]×Ô¼º¶¯ÊÖ´òÔìǶÈëʽLinuxÈíÓ²¼þ¿ª·¢»·¾³
ÔÎĵØÖ·£ºhttp://www.xxlinux.com/linux/article/development/embed/20080227/14047.html
LinuxºÍuClinux
LinuxÕýÖð½¥µØÓ¦ÓÃÓÚǶÈëʽÉ豸£¬uClinuxÕýÊÇÔÚÕâÖÖ·ÕΧϲúÉúµÄ¡£uClinux¾ÍÊÇMicro-Control-Linux£¬ËüÒ²ÊÇÒ»¸ö¿ªÔ´ÏîÄ¿£¬uClinuxµÄÔ´´úÂëºÍ¿ª·¢¹¤¾ß¿ÉÒÔÃâ·Ñ´Óhttp://www.uclinux.orgÉÏÏÂÔØµÃµ½¡£ uClinuxÊÇרΪÄÇЩûÓÐMMU(ÄÚ´æ¹ÜÀíµ¥Ôª)µÄǶÈëʽ´¦ÀíÆ÷¿ª·¢µÄ£¬ºÍÖ÷Á÷µÄLinuxÏà±È£¬uClinuxÓÐÒÔϵÄÌØµã£º
1£®¼ò»¯ÁËÄں˼ÓÔØ·½Ê½£¬uClinuxµÄÄں˿ÉÒÔÔÚFlashÉÏÖ±½ÓÔËÐУº¾ÍÊǰÑuClinuxµÄÄں˵ĿÉÖ´ÐÐÓ³ÏóÉÕдµ½flashÉÏ£¬ÏµÍ³Æô¶¯Ê±´Ó FlashµÄij¸öµØÖ·¿ªÊ¼Öð¾äÖ´ÐУ»Ò²¿ÉÒÔ¼ÓÔØµ½ÄÚ´æÖÐÔËÐУº°ÑÄں˵ÄѹËõÎļþ´æ·ÅÔÚFlashÉÏ£¬ÏµÍ³Æô¶¯Ê±¶ÁȡѹËõÎļþÔÚÄÚ´æÀï½âѹ£¬È»ºó¿ªÊ¼Ö´ÐС£
2£®²ÉÓÃÁËromfsÎļþϵͳ×÷ΪrootÎļþϵͳ£ºÕâÖÖÎļþϵͳÏà¶ÔÓÚÒ»°ãµÄext2ÎļþϵͳҪÇó¸üÉٵĿռ䣬Ê×ÏÈÄÚºËÖ§³ÖromfsÎļþϵͳ±ÈÖ§³Öext2ÎļþϵͳÐèÒª¸üÉٵĴúÂ룬Æä´ÎromfsÎļþϵͳÏà¶Ô¼òµ¥£¬½¨Á¢ÎļþϵͳsuperblockÐèÒª¸üÉٵĴ洢¿Õ¼ä¡£RomfsÎļþϵͳ²»Ö§³Ö¶¯Ì¬²Áд£¬¶ÔÓÚϵͳÐèÒª¶¯Ì¬±£´æµÄÊý¾Ý²ÉÓÃRAMÅ̵ķ½·¨´¦Àí£¬RAMÅ̲ÉÓÃext2Îļþϵͳ¡£
3£®Ê¹ÓÃÁËFlat¿ÉÖ´ÐÐÎļþ¸ñʽ£ºelf¸ñʽÓкܴóµÄÎļþÍ·£¬flatÎļþ¶ÔÎļþÍ·ºÍһЩ¶ÎÐÅÏ¢×öÁ˼ò»¯¡£
4£®ÖØÐ´ÁËÓ¦ÓóÌÐò¿â£º uClibc¶Ôlibc×öÁ˾«¼ò£¬uClinux¶ÔÓû§³ÌÐò²ÉÓþ²Ì¬Á¬½ÓµÄÐÎʽ¡£
uClinuxµÄ¿ª·¢»·¾³
www.uclinux.org ΪuClinuxÌṩÁËGNUµÄ½»²æ±àÒëÆ÷£¬°üÀ¨ÒÔÏÂ×é¼þ£º
gcc½»²æ±àÒëÆ÷£¬¼´ÔÚËÞÖ÷»úÉÏ¿ª·¢±àÒëÄ¿±êÉÏ¿ÉÔËÐеĶþ½øÖÆÎļþ£»
binutils¸¨Öú¹¤¾ß£¬°üÀ¨objdump¡¢as¡¢ldµÈ£»
gdbµ÷ÊÔÆ÷¡£
ÒÔÔÚARM7ÉÏ¿ª·¢uClinuxΪÀý£º
1£®»ñµÃ uClinux-distµÄÔ´Âë°ü
www.uclinux.orgÉ϶¨ÆÚΪÐÂÍÆ³öµÄLinuxÄÚºËÍÆ³öÏàÓ¦µÄÔ´Âë°ü£¬×îеİ汾ΪKernel-2.4.21,¿ÉÒÔ´Óhttp://www.uclinux.org/pub/uClinux/dist/ ÉÏÃâ·
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......
Linux³ÖÐøÎ¬»¤Ïà¹ØµÄÊý¾Ý½á¹¹£¨ÖîÈçrunqueue¡¢prio_array£©£¬²»¶Ï¸üнø³ÌµÄ¶¯Ì¬ÓÅÏȼ¶£¬²¢ÏàÓ¦µÄµ÷Õûʱ¼äƬ£¬´Ó¶øÊµÏÖÁËO(1)¸´ÔӶȵĽø³Ìµ÷¶ÈËã·¨£¬¿ÉÒÔÔÚ³£Á¿Ê±¼äÄÚµ÷¶Èнø³ÌÉĮ̈ÔËÐУ¬¶ø²»ÊÜϵͳÖнø³Ì×ÜÊýµÄÓ°Ïì¡£
ÎÒ¾õµÃÕâÖÁÉÙÄÜ×ôÖ¤Èý¸öµÀÀí£º
£¨1£©Ð§Òæ¿ÉÒÔÀ´×ÔÓÚÆ½Ê±µãµãµÎµÎµØ»ýÀÛ£¨¹¦·ò¶¼ÔÚÆ½Ê±£¬¶ø²¢·ÇÖ»Õë¶Ô ......
[root@nonamelinux ~]# free
total used free shared buffers cached
Mem: 386024 377116 8908 0 21280 155468
-/+ buffers/cache: 200368 185656
Swap: 393552 0 393552
ÏÂÃæÊǶÔÕâЩÊýÖµµÄ½âÊÍ£º
µÚ¶þÐÐ(mem)£º
total:×ܼÆÎïÀíÄÚ´æµÄ´óС¡£
used:ÒÑʹÓöà´ó¡£
free:¿ÉÓÃÓжàÉÙ¡£
Shared:¶à¸ö½ø³Ì¹²ÏíµÄÄÚ ......
Purpose
This examples shows how to create and stop a kernel thread.
The driver is implemented as a loadable module. In the init_module() routine five kernel threads are created. This kernel threads sleep one second, wake up, print a message and fall asleep again. On unload of the module (cle ......