ÔÚÓû§¿Õ¼ä£¬Ê¹ÓÃioctlϵͳµ÷ÓÃÀ´¿ØÖÆÉ豸£¬ÔÐÍÈçÏ£º
int ioctl(int fd, unsigned long cmd, ...);
µÚÈý¸ö²ÎÊý²»±íʾһ¸ö±äÊýÄ¿µÄ²ÎÊý£¬¶øÊÇÒ»¸öÀàÐÍ¿ÉÑ¡µÄ²ÎÊý¡£µÚÈý¸ö²ÎÊýÒÀÀµÓÚ¿ØÖÆÃüÁһЩÃüÁî²»ÓòÎÊý£¬Ò»Ð©ÓÃÒ»¸öÕûÊýÖµ£¬Ò»Ð©Ê¹ÓÃÖ¸Õë
1¡¢ioctlº¯Êý¶¨ÒåÃüÁî
ÔÚ±àдioctl´úÂë֮ǰ£¬Ê×ÏÈÐèÒª¶¨ÒåÃüÁΪÁË·ÀÖ¹¶Ô´íÎóµÄÉ豸ʹÓÃÕýÈ·µÄÃüÁÃüÁîºÅÓ¦¸ÃÔÚϵͳ·¶Î§ÄÚÊÂΨһµÄ
ioctlÃüÁî±àÂë±»»®·ÖΪ¼¸¸ö¶Î£¬include/asm/ioctl.hÖж¨ÒåÁËÕâЩ×ֶΣºÀàÐÍ£¨»ÃÊý£©£¬»ùÊý£¬´«ËÍ·½Ïò£¬²ÎÊý´óСµÈ¡£Documentation/ioctl-number.txtÎļþÖÐÂÞÁÐÁËÔÙÄÚºËÖÐÒѾʹÓÃÁ˵ĻÃÊý¡£
¶¨ÒåioctlÃüÁîµÄÕýÈ··½·¨ÊÇʹÓÃ4¸öλ¶Î£¬Õâ¸öÁбíÖнéÉܵķûºÅ¶¨ÒåÔÚ<linux/ioctl.h>ÖУº
Type£º
»ÃÊý£¨ÀàÐÍ£©£º±íÃ÷ÄĸöÉ豸µÄÃüÁÔڲο¼ÁËioctl-number.txtÖ®ºóÑ¡³ö£¬8λ¿í¡£
Number£º
ÐòºÅ£¬±íÃ÷É豸ÃüÁîÖеĵڼ¸¸ö£¬8λ¿í
ÄÚºËÌṩÁËÏÂÁкêÀ´°ïÖú¶¨ÒåÃüÁîºÅ£¬ÈçÏÂ
_IO(type, nr)£ºÃ»ÓвÎÊýµÄÃüÁî
_IOR(type, nr, datatype)£º´ÓÇý¶¯ÖжÁÊý¾Ý
_IOW(type, nr, datatype)£ºÐ´Êý¾Ýµ½Çý¶¯
_IOWR(type, nr, datatype)£ºË«Ïò´«ËÍ£¬typeºÍnumber×÷Ϊ²ÎÊý±»´«µÝ
2¡¢ioctlº¯ÊýµÄʵÏÖ
· ......
ʲôÊÇÇý¶¯£¿
×îͨË׵ĽâÊ;ÍÊÇ“ÇýʹӲ¼þÉ豸Ðж¯”
×÷Óã¿
É豸Çý¶¯Óëµ×²ãÓ²¼þÖ±½Ó´ò½»µÀ£¬°´ÕÕÓ²¼þÉ豸µÄ¾ßÌ幤×÷·½Ê½¶ÁдÉ豸¼Ä´æÆ÷£¬Íê³ÉÉ豸µÄÂÖѯ¡¢Öжϴ¦Àí¡¢DMAͨÐÅ£¬½øÐÐÎïÀíÄÚ´æÏòÐéÄâÄÚ´æµÄÓ³É䣬×îÖÕʹͨÐÅÉ豸Äܹ»ÊÕ·¢Êý¾Ý£¬Ê¹ÏÔʾÉ豸Äܹ»ÏÔʾÎÄ×ÖºÍ»Ãæ£¬Ê¹´æ´¢É豸Äܹ»¼Ç¼ÎļþºÅÊý¾Ý
¼ÆËã»úϵͳµÄÓ²¼þÖ÷ÒªÓÐcpu¡¢´æ´¢Æ÷¡¢ÍâÉè×é³É¡£µ«ÊÇËæ×ÅICÖÆÔ칤Òյķ¢Õ¹£¬Ä¿Ç°£¬Ð¾Æ¬µÄ¼¯³É¶ÈÔ½À´Ô½¸ß£¬ÍùÍùcpuÄÚ²¿¾Í¼¯³ÉÁË´æ´¢Æ÷ºÍÍâÉèÊÊÅäÆ÷¡£ARM´¦ÀíÆ÷¼¯³ÉÁËUART¡¢I2C¿ØÖÆÆ÷£¨2==ƽ·½£©¡¢USB¿ØÖÆÆ÷¡¢SDRAM¿ØÖÆÆ÷µÈ
Çý¶¯Õë¶ÔµÄ¶ÔÏóÊÇ´æ´¢Æ÷ºÍÍâÉ裨°üÀ¨cpuÄÚ²¿¼¯³ÉµÄ´æ´¢Æ÷ºÍÍâÉ裩£¬¶ø²»ÊÇÕë¶ÔcpuºË¡£Linux½«´æ´¢Æ÷ºÍÍâÉè·ÖΪ3¸ö»ù´¡´óÀࣺ×Ö·ûÉ豸¡¢¿éÉ豸¡¢ÍøÂçÉ豸
×Ö·ûÉ豸֮ÄÇЩ±ØÐëÒÔ´®ÐÐ˳ÐòÒÀ´Î½øÐзÃÎʵÄÉ豸£¬Èç´¥ÃþÆÁ¡¢´Å´øÇý¶¯Æ÷¡¢Êó±êµÈ¡£¿ÉÉ豸¿ÉÒÔ°´ÕÕÈÎÒâ˳Ðò½øÐзÃÎÊ£¬ÒÔ¿éΪµ¥Î»½øÐвÙ×÷£¬ÈçÓ²ÅÌ¡¢ÈíÇýµÈ¡£×Ö·ûÉ豸²»¾¹ýϵͳµÄ¿ìËÙ»º³å£¬¶ø¿éÉ豸¾¹ýϵͳµÄ¿ìËÙ»º³å¡£µ«ÊÇ£¬×Ö·ûÉ豸ºÍ¿éÉ豸²¢Ã»ÓÐÃ÷ÏԵĽçÏÞ£¬ÈçflashÉ豸·ûºÏ¿éÉ豸µÄÌØµã£¬µ«ÊÇÎÒÃÇÈÔÈ»¿ÉÒÔ°ÑËü×÷Ϊһ¸ö×Ö·ûÉ豸À´·ÃÎÊ
ÔÚLinuxϵͳÖУ¬ÍøÂçÉè±¸ÃæÏòÊý¾Ý°üµÄ ......
´¦ÀíÆ÷µÄ·ÖÀ࣬ÈçÏÂͼËùʾ£º
´æ´¢Æ÷¿É·ÖΪֻ¶Á´æ´¢Æ÷£¨ROM£©¡¢ÉÁ´æ£¨Flash£©¡¢Ëæ»ú´æÈ¡´æ´¢Æ÷£¨RAM£©¡¢¹â½éÖÊ´æ´¢Æ÷ºÍ´Å½éÖÊ´æ´¢Æ÷
Nor FlashºÍcpuµÄ½Ó¿ÚÊôÓÚµäÐ͵ÄÀàSRAM½Ó¿Ú£¬²»ÐèÒªÔö¼Ó¶îÍâµÄ¿ØÖƵç·¡£Nor FlashµÄÌØµãÊÇ¿ÉоƬÄÚÖ´ÐУ¬³ÌÐò¿ÉÒÔÖ±½ÓÔÚNorÄÚÔËÐС£¶øNand FashºÍcpuµÄ½Ó¿Ú±ØÐëÓÉÏàÓ¦µÄ¿ØÖƵç·½øÐÐת»»£¬µ±È»Ò²¿ÉÒÔͨ¹ýµØÖ·Ïß»òGPIO²úÉúNand Flash½Ó¿ÚµÄÐźš£Nand FlashÒԿ鷽ʽ½øÐзÃÎÊ£¬²»Ö§³ÖоƬÄÚÖ´ÐС£
FlashµÄ±à³ÌÔÀí¶¼ÊÇÖ»Äܽ«1дΪ0£¬¶ø²»Äܽ«0дÍê1.ËùÒÔÔÚFlash±à³Ì֮ǰ±ØÐ뽫¶ÔÓ¦µÄ¿é²Á³ý£¬¶ø²Á³ýµÄ¹ý³Ì¾ÍÊǰÑËùÓеÄλ¶¼Ð´Îª1µÄ¹ý³Ì£¬¿éÄÚµÄËùÓÐ×Ö½Ú±äΪ1xFF
´æ´¢Æ÷µÄ·ÖÀ࣬ÈçÏÂͼËùʾ£º
ÔÀíͼ·ÖÎö£ºÍ¨¹ýÔĶÁµç·°åµÄÔÀíͼ»ñµÃ¸÷ÖÖ´æ´¢Æ÷¡¢ÍâÉèËùʹÓõÄÓ²¼þ×ÊÔ´£¬Ö÷Òª°üÀ¨´æ´¢Æ÷ºÍÍâÉè¿ØÖÆÐ¾Æ¬ËùʹÓÃµÄÆ¬Ñ¡¡¢Öжϡ¢DMA×ÊÔ´¡£Í¨¹ý·ÖÎöƬѡµÃ³öоƬµÄÄÚ´æ¡¢I/O»ùµØÖ·£¬Í¨¹ý·ÖÎöÖжϡ¢DMAÐźŻñµÃоƬʹÓõÄÖжϺźÍDMAͨµÀ£¬¹éÄɳöÀàËÆÏÂ±í£º
ʱÐò·ÖÎö£º¶ÔÇý¶¯¹¤³Ìʦ»òÓ²¼þ¹¤³Ìʦ¶øÑÔ£¬Ê±Ðò·ÖÎöµÄÒâ˼ÊÇÈÃоƬ֮¼äµÄ·ÃÎÊÂú×ãоƬÊÖ²áÖÐʱÐòͼÐźÅÓÐЧµÄÏȺó˳Ðò¡¢²ÉÑù½¨Á¢Ê±¼äºÍ±£³Öʱ¼äµÄÒªÇó£¬Ôڵ緰幤×÷²»Õý³£µÄʱºò£¬× ......
ÎÒÓõÄÊÇ×îÆÕͨµÄusbÉãÏñÍ·£¬Ö÷оƬΪÖÐÐÇ΢ZC0301P£¨¾Ý˵Êг¡Õ¼ÓÐÂÊ70£¥ÒÔÉÏ£©£¬COMS´«¸ÐÆ÷ΪhynixµÄhv7131e1,ÊÐÃæÉÏÄÜÂòµ½µÄ»ù±¾ÉÏÊÇÕâÖÖÅäÖá£
linuxÏÂÇý¶¯£¬ÎÒÖ±½ÓÒÆÖ²spca5xx£¬ÏÖÔÚ³öÁËspc5xx-le£¨Light-Edition for Linux Embedded£©¸ü·½±ã£¬Ö±½ÓÕë¶ÔǶÈëʽϵͳ×öÁËÓÅ»¯£¬¿ÉÒԲο¼ÕâÀïhttp://mxhaard.free.fr/embedded.html
¸Õ²ÅʵÑéÁËһϣ¬spc5xx-leÒ²¿ÉÒÔÓá£ÏÂÃæ¾ÍÒÔspc5xx-leΪÀý¡£
¾ßÌå²½Ö裺
1¡¢ÎÒµÄlinuxÊÇATMEL×îа汾£¬Linux-2.4.27-vrs1-Atmel¡£toolchainΪarm-linux-2.95.3¡£
2¡¢ÅäÖÃÄںˣ¬ÊÔ×ÅÈÃlinux¿ÉÒÔÔÚat91rm9200ÉÏÔËÐÐÆðÀ´¡£
3¡¢ÏÂÔØ²¹¶¡£¨http://mxhaard.free.fr/spca50x/Doc/KernelPatch
£©£¬´ò²¹¶¡
cp usb-2.4.31.patch.gz /work/Atmel-9200-dist/linux-2.4.27-vrs1-ATMEL/drivers/usb
cd /work/Atmel-9200-dist/linux-2.4.27-vrs1-ATMEL/drivers/usb
tar -xvzf usb-2.4.31.patch.gz
patch -p1 < usb-2.4.31.patch
4¡¢ÖØÐÂÅäÖÃÄںˣ¬ÄÚºË USB support ---> USB Multimedia devices Ñ¡ÏîÏÂÓ¦¸ÃÓÐ
& ......
ÔÚÉ豸Çý¶¯·½Ã棬Linux2.6Ïà¶ÔÓÚLinux2.4ÓнϴóµÄ¸Ä¶¯£¬ÕâÖ÷Òª±íÏÖÔÚÄÚºËAPIÖÐÔö¼ÓÁ˲»ÉÙй¦ÄÜ£¨ÈçÄÚ´æ³Ø£©¡¢sysfsÎļþϵͳ¡¢ÄÚºËÄ£¿é´Ó.o±äΪ.ko¡¢Çý¶¯Ä£¿é±àÒ뷽ʽ¡¢Ä£¿éʹÓüÆÊý¡¢Ä£¿é¼ÓÔØºÍÐ¶ÔØº¯ÊýµÄ¶¨ÒåµÈ·½Ãæ
LinuxÄÚºËÖ÷ÒªÓнø³Ìµ÷¶È¡¢ÄÚ´æ¹ÜÀí¡¢ÐéÄâÎļþϵͳ¡¢ÍøÂç½Ó¿ÚºÍ½ø³Ì¼äͨÐŵÈ5¸ö×Óϵͳ×é³É£¬ÈçÏÂͼ£º
ÔÚÉ豸Çý¶¯±à³ÌÖУ¬µ±ÇëÇóµÄ×ÊÔ´²»ÄÜÂú×ãʱ£¬Çý¶¯Ò»°ã»áµ÷¶ÈÆäËûÏß³ÌÖ´ÐУ¬²¢Ê¹Çý¶¯¶ÔÓ¦µÄ½ø³Ì½øÈë˯Ãß״̬£¬Ö±µ½ËüÇëÇóµÄ×ÊÔ´±»ÊÍ·Å£¬²Å»á±»»½ÐѶø¼ÍÄîÈÕ¾ÍÐ÷״̬
ÔÚÉ豸Çý¶¯±à³ÌÖУ¬Èç¹ûÐèÒª¼¸¸ö²¢·¢Ö´ÐеÄÈÎÎñ£¬¿ÉÒÔÆô¶¯ÄÚºËỊ̈߳¬Æô¶¯ÄÚºËÏ̵߳ĺ¯ÊýΪ£ºint kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
LinuxÄÚ´æ¹ÜÀíÍê³ÉΪÿ¸ö½ø³Ì½øÐÐÐéÄâÄÚ´æµ½ÎïÀíÄÚ´æµÄת»»¡£Ò»°ã¶øÑÔ£¬LinuxµÄÿ¸ö½ø³ÌÏíÓÐ4GBµÄÄÚ´æ¿Õ¼ä£¬0-3GBÊôÓÚÓû§¿Õ¼ä£¬3-4GBÊôÓÚÄں˿ռ䣬Äں˿ռä¶Ô³£¹æÄÚ´æ¡¢I/OÉ豸ÄÚ´æÒÔ¼°¸ß¶ËÄÚ´æ´æÔÚ²»Í¬µÄ´¦Àí·½Ê½
ÐéÄâÎļþϵͳÒþ²ØÁ˸÷ÖÖÓ²¼þµÄ¾ßÌåϸ½Ú£¬ÎªËùÓеÄÉ豸ÌṩÁËͳһµÄ½Ó¿Ú¡£¶øÇÒ£¬Ëü¶ÀÁ¢ÓÚ¸÷¸ö¾ßÌåµÄÎļþϵͳ£¬ÊǶԸ÷ÖÖÎļþϵͳµÄÒ»¸ö³éÏó£¬ËüʹÓÃsuper block´æ·ÅÎļþϵͳÏà¹ØÐÅÏ¢£¬Ê¹ÓÃË÷Òý½ ......
ÎҵĵÚÒ»¸öshell³ÌÐò£ºtt1.sh
while true
do
date;
sleep 1;
done
Ö´Ðз½Ê½1£ºsh tt1.sh
Ö´Ðз½Ê½2£º./tt1.sh£¨ÒªÇó¸ÃÎļþÓпÉÖ´ÐÐȨÏÞ£©
Shell±äÁ¿£º
»·¾³±äÁ¿£º
¹¤¾ß£ºecho »ØÏÔ
ÏÔʾ»·¾³±äÁ¿£ºecho $HOME
echo $HOSTNAME
echo $LOGNAME
Ð޸Ļ·¾³±äÁ¿£ºexport PATH=/home/ding:$PATH ¹¹½¨½»²æ±àÒ빤¾ßÊÇÓõ½
vi ~/.bashrc
/etc/X11/xinit/xinitrc
pwd µ±Ç°Ä¿Â¼
¹²ÏíĿ¼£º/mnt/hgfs
nfsÐÒé
mount -t nfs 192.168.1.117:/dingyuanpu /mnt/nfs
È«²¿É¾³ý£ ......