chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

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

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

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

嵌入式Linux的ARM移植實例研究

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

資料介紹

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

評論

查看更多

下載排行

本周

  1. 1EMC電路設(shè)計工程師必備的EMC基礎(chǔ)
  2. 0.42 MB   |  4次下載  |  2 積分
  3. 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊
  4. 1.19 MB   |  1次下載  |  免費
  5. 3低壓降肖特基整流管SR340L數(shù)據(jù)手冊
  6. 0.78 MB   |  1次下載  |  免費
  7. 4ZX8002E 觸摸調(diào)光LED集成IC數(shù)據(jù)手冊
  8. 2.27 MB   |  次下載  |  免費
  9. 5SOD-323塑料封裝ESD保護二極管SD05T系列規(guī)格書
  10. 1.07 MB   |  次下載  |  免費
  11. 6SOT-23塑料封裝ESD保護二極管SMxx Series系列規(guī)格書
  12. 0.93 MB   |  次下載  |  免費
  13. 7高效率整流二極管HER151 THRU HER158數(shù)據(jù)手冊
  14. 0.54 MB   |  次下載  |  免費
  15. 8低壓降肖特基整流管SL22 THRU SL210數(shù)據(jù)手冊
  16. 1.03 MB   |  次下載  |  免費

本月

  1. 1三相逆變主電路的原理圖和PCB資料合集免費下載
  2. 27.35 MB   |  111次下載  |  1 積分
  3. 2運算放大器基本電路中文資料
  4. 1.30 MB   |  16次下載  |  免費
  5. 3蘋果iphone 11電路原理圖
  6. 4.98 MB   |  11次下載  |  5 積分
  7. 4TL494工業(yè)用開關(guān)電源原理圖資料
  8. 0.22 MB   |  10次下載  |  1 積分
  9. 5常用電子元器件介紹
  10. 3.21 MB   |  8次下載  |  免費
  11. 6QW2893應急燈專用檢測芯片
  12. 590.40 KB  |  4次下載  |  免費
  13. 7相關(guān)協(xié)議信號總結(jié)
  14. 0.94 MB   |  4次下載  |  免費
  15. 8EMC電路設(shè)計工程師必備的EMC基礎(chǔ)
  16. 0.42 MB   |  4次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935130次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191390次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183344次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81591次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分