在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>嵌入式Linux的ARM移植實(shí)例研究

嵌入式Linux的ARM移植實(shí)例研究

2017-10-25 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

應(yīng)用實(shí)例的編寫實(shí)際上已經(jīng)不屬于Linux操作系統(tǒng)移植的范疇,但是為了保證本系列文章的完整性,這里提供一系列針對(duì)嵌入式Linux開發(fā)應(yīng)用程序的實(shí)例。
  編寫Linux應(yīng)用程序要用到如下工具:
  (1)編譯器:GCC
  GCC是Linux平臺(tái)下最重要的開發(fā)工具,它是GNU的C和C++編譯器,其基本用法為:gcc[options][filenames]。
  我們應(yīng)該使用arm-linux-gcc。
  (2)調(diào)試器:GDB
  gdb是一個(gè)用來調(diào)試C和C++程序的強(qiáng)力調(diào)試器,我們能通過它進(jìn)行一系列調(diào)試工作,包括設(shè)置斷點(diǎn)、觀查變量、單步等。
  我們應(yīng)該使用arm-linux-gdb。
  (3)Make
  GNUMake的主要工作是讀進(jìn)一個(gè)文本文件,稱為makefile。這個(gè)文件記錄了哪些文件由哪些文件產(chǎn)生,用什么命令來產(chǎn)生。Make依靠此makefile中的信息檢查磁盤上的文件,如果目的文件的創(chuàng)建或修改時(shí)間比它的一個(gè)依靠文件舊的話,make就執(zhí)行相應(yīng)的命令,以便更新目的文件。
  Makefile中的編譯規(guī)則要相應(yīng)地使用arm-linux-版本。
  (4)代碼編輯
  可以使用傳統(tǒng)的vi編輯器,但最好采用emacs軟件,它具備語法高亮、版本控制等附帶功能。
  在宿主機(jī)上用上述工具完成應(yīng)用程序的開發(fā)后,可以通過如下途徑將程序下載到目標(biāo)板上運(yùn)行:
  (1)通過串口通信協(xié)議rz將程序下載到目標(biāo)板的文件系統(tǒng)中(感謝Linux提供了rz這樣的一個(gè)命令);
  (2)通過ftp通信協(xié)議從宿主機(jī)上的ftp目錄里將程序下載到目標(biāo)板的文件系統(tǒng)中;
  (3)將程序拷入U(xiǎn)盤,在目標(biāo)機(jī)上mountU盤,運(yùn)行U盤中的程序;
  (4)如果目標(biāo)機(jī)Linux使用NFS文件系統(tǒng),則可以直接將程序拷入到宿主機(jī)相應(yīng)的目錄內(nèi),在目標(biāo)機(jī)Linux中可以直接使用。
  1.文件編程
  Linux的文件操作API涉及到創(chuàng)建、打開、讀寫和關(guān)閉文件。
  創(chuàng)建
  intcreat(constchar*filename,mode_tmode);
  參數(shù)mode指定新建文件的存取權(quán)限,它同umask一起決定文件的最終權(quán)限(mode&umask),其中umask代表了文件在創(chuàng)建時(shí)需要去掉的一些存取權(quán)限。umask可通過系統(tǒng)調(diào)用umask()來改變:
  intumask(intnewmask);
  該調(diào)用將umask設(shè)置為newmask,然后返回舊的umask,它只影響讀、寫和執(zhí)行權(quán)限。
  打開
  intopen(constchar*pathname,intflags);
  intopen(constchar*pathname,intflags,mode_tmode);
  讀寫
  在文件打開以后,我們才可對(duì)文件進(jìn)行讀寫了,Linux中提供文件讀寫的系統(tǒng)調(diào)用是read、write函數(shù):
  intread(intfd,constvoid*buf,size_tlength);
  intwrite(intfd,constvoid*buf,size_tlength);
  其中參數(shù)buf為指向緩沖區(qū)的指針,length為緩沖區(qū)的大小(以字節(jié)為單位)。函數(shù)read()實(shí)現(xiàn)從文件描述符fd所指定的文件中讀取length個(gè)字節(jié)到buf所指向的緩沖區(qū)中,返回值為實(shí)際讀取的字節(jié)數(shù)。函數(shù)write實(shí)現(xiàn)將把length個(gè)字節(jié)從buf指向的緩沖區(qū)中寫到文件描述符fd所指向的文件中,返回值為實(shí)際寫入的字節(jié)數(shù)。
  以O(shè)_CREAT為標(biāo)志的open實(shí)際上實(shí)現(xiàn)了文件創(chuàng)建的功能,因此,下面的函數(shù)等同creat()函數(shù):
  intopen(pathname,O_CREAT|O_WRONLY|O_TRUNC,mode);
  定位
  對(duì)于隨機(jī)文件,我們可以隨機(jī)的指定位置讀寫,使用如下函數(shù)進(jìn)行定位:
  intlseek(intfd,offset_toffset,intwhence);
  lseek()將文件讀寫指針相對(duì)whence移動(dòng)offset個(gè)字節(jié)。操作成功時(shí),返回文件指針相對(duì)于文件頭的位置。參數(shù)whence可使用下述值:
  SEEK_SET:相對(duì)文件開頭
  SEEK_CUR:相對(duì)文件讀寫指針的當(dāng)前位置
  SEEK_END:相對(duì)文件末尾
  offset可取負(fù)值,例如下述調(diào)用可將文件指針相對(duì)當(dāng)前位置向前移動(dòng)5個(gè)字節(jié):
  lseek(fd,-5,SEEK_CUR);
  由于lseek函數(shù)的返回值為文件指針相對(duì)于文件頭的位置,因此下列調(diào)用的返回值就是文件的長度:
  lseek(fd,0,SEEK_END);
  關(guān)閉
  只要調(diào)用close就可以了,其中fd是我們要關(guān)閉的文件描述符:
  intclose(intfd);
  下面我們來編寫一個(gè)應(yīng)用程序,在當(dāng)前目錄下創(chuàng)建用戶可讀寫文件“example.txt”,在其中寫入“HelloWorld”,關(guān)閉文件,再次打開它,讀取其中的內(nèi)容并輸出在屏幕上:
  #include
  #include
  #include
  #include
  #defineLENGTH100
  main()
  {
  intfd,len;
  charstr[LENGTH];
  fd=open(“hello.txt”,O_CREAT|O_RDWR,S_IRUSR|S_IWUSR);/*創(chuàng)建并打開文件*/
  if(fd)
  {
  write(fd,“Hello,SoftwareWeekly”,strlen(“Hello,softwareweekly”));
  /*寫入Hello,softwareweekly字符串*/
  close(fd);
  }
  fd=open(“hello.txt”,O_RDWR);
  len=read(fd,str,LENGTH);/*讀取文件內(nèi)容*/
  str[len]=‘’;
  printf(“%sn”,str);
  close(fd);
  }
  2.進(jìn)程控制/通信編程
  進(jìn)程控制中主要涉及到進(jìn)程的創(chuàng)建、睡眠和退出等,在Linux中主要提供了fork、exec、clone的進(jìn)程創(chuàng)建方法,sleep的進(jìn)程睡眠和exit的進(jìn)程退出調(diào)用,另外Linux還提供了父進(jìn)程等待子進(jìn)程結(jié)束的系統(tǒng)調(diào)用wait。
  fork
  對(duì)于沒有接觸過Unix/Linux操作系統(tǒng)的人來說,fork是最難理解的概念之一,因?yàn)樗鼒?zhí)行一次卻返回兩個(gè)值,以前“聞所未聞”。先看下面的程序:
  intmain()
  {
  inti;
  if(fork()==0)
  {
  for(i=1;i《3;i++)
  printf(“Thisischildprocessn”);
  }
  else
  {
  for(i=1;i《3;i++)
  printf(“Thisisparentprocessn”);
  }
  }
  執(zhí)行結(jié)果為:
  Thisischildprocess
  Thisischildprocess
  Thisisparentprocess
  Thisisparentprocess
  fork在英文中是“分叉”的意思,一個(gè)進(jìn)程在運(yùn)行中,如果使用了fork,就產(chǎn)生了另一個(gè)進(jìn)程,于是進(jìn)程就“分叉”了。當(dāng)前進(jìn)程為父進(jìn)程,通過fork()會(huì)產(chǎn)生一個(gè)子進(jìn)程。對(duì)于父進(jìn)程,fork函數(shù)返回子程序的進(jìn)程號(hào)而對(duì)于子程序,fork函數(shù)則返回零,這就是一個(gè)函數(shù)返回兩次的本質(zhì)。
  exec
  在Linux中可使用exec函數(shù)族,包含多個(gè)函數(shù)(execl、execlp、execle、execv、execve和execvp),被用于啟動(dòng)一個(gè)指定路徑和文件名的進(jìn)程。exec函數(shù)族的特點(diǎn)體現(xiàn)在:某進(jìn)程一旦調(diào)用了exec類函數(shù),正在執(zhí)行的程序就被干掉了,系統(tǒng)把代碼段替換成新的程序(由exec類函數(shù)執(zhí)行)的代碼,并且原有的數(shù)據(jù)段和堆棧段也被廢棄,新的數(shù)據(jù)段與堆棧段被分配,但是進(jìn)程號(hào)卻被保留。也就是說,exec執(zhí)行的結(jié)果為:系統(tǒng)認(rèn)為正在執(zhí)行的還是原先的進(jìn)程,但是進(jìn)程對(duì)應(yīng)的程序被替換了。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 五月婷婷激情在线| 色狠狠网| 午夜视频免费观看黄| 欧美色亚洲图| 日本xxxx色视频在线观看免| 俺去在线| 西西人体大胆午夜gog0| 校园 春色 欧美 另类 小说| 国产又色| 国产精品久久久久影视不卡| 在线毛片网| 国久久| 波多野结衣三个女人蕾丝边| 一级待一黄aaa大片在线还看| 好爽毛片一区二区三区四| 国产va免费精品高清在线| 国产福利久久| 午色| 一级不卡毛片免费| 亚洲欧美日韩一区| 美日韩中文字幕| 好吊788gaoco| 性欧美xxxx视频在线观看| www.jizz在线观看| 看片在线| 性free中国美女hd| 伊人色综合久久天天爱| 亚洲播放| 久久综合九色欧美综合狠狠| 精品国产一二三区| 四虎在线最新永久免费播放| 午夜影院a| 综合成人在线| 成人欧美一区二区三区| 中文字幕亚洲区| 久久成人免费网站| a级毛片毛片免费很很综合| 四虎4hu永久在线观看| 天天干夜夜骑| 午夜免费的国产片在线观看| 一级毛片女人喷潮|