<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產品分類

      當前位置: 首頁 > 工業電子產品 > 其他電子產品 > 開發板,套件,編程器 > 開發板

      類型分類:
      科普知識
      數據分類:
      開發板

      Atheros SDK研究與使用

      發布日期:2022-10-14 點擊率:51

      最近空閑時間很多,索性研究起了Atheros SDK。正如很多讀者所知道的, 筆者本人并非軟件出身,所以很基礎的問題在我看來都很高深,Atheros的SDK也同樣如此,看了1,2天代碼,我總算研究清楚怎樣使用,后續爭取將我的研究與使用成果在這里與讀者分享。第一階段的研究目的是如何將自己需要的軟件一同編譯,最終可以在目標板上運行,本文也正是圍繞著這樣的主題展開。

      Atheros SDK初體驗

      這次使用的Atheros SDK版本是LSDK-9.2.0,使用的板子是 筆者自己設計的基于AR9344的大功率無線AP。按照官方文檔中的說明,將源代碼解壓至工作目錄,如下圖。

      SourceCode-Directory

      然后進入build目錄運行如下命令

      make BOARD_TYPE=db12x BUILD_TYPE=jffs2

      因為是第一次使用,需要編譯工具鏈,所以耗費的時間很長,好在編譯過程中沒有出現任何問題,順利地完成了全部的編譯過程,并得到了最終的二進制文件,如下圖。

      Images-Built

      將得到的二進制文件燒寫至Flash,板子可以正常啟動,說明以上的操作都是正確的。

      變更Flash容量

      由于我的設計是16MB Flash,與db12x默認的8MB Flash不符,因此需要更改源代碼,將Flash配置為16MB。經過了一段時間的摸索,發現Flash容量定義在了以下文件中

      boot/u-boot/include/configs/db12x.h

      將其中的的第12行變更為

      #define FLASH_SIZE16

      再次編譯,燒寫得到的二進制文件,發現在u-boot中已經正確地識別為16MB Flash。

      分析Makefile

      接下來研究如何將自己編寫的代碼編譯成為可執行文件,并在目標板中運行。在通讀了build目錄中的Makefile文件后,發現其會包含build/scripts目錄下相應的Makefile,這樣只需要變更build/scripts/db12x下的Makefile即可更改編譯進來的軟件。按照Atheros官方的注釋,也是如此

      # Adding make instructions:

      # Usually board/scripts/<target> is the correct place to do this.

      # IMPORTANT: all "make targets" which add to $(INSTALL_ROOT)

      再來分析build/scripts/db12x/Makefile.db12x文件,發現其最開始的一段輸出了較多的環境變量,例如

      export HAL=$(TOPDIR)/drivers/wlan/hal

      export ENETDIR=$(TOPDIR)/linux/drivers/ethernet

      分析這樣做的好處是方便后續軟件版本的變更及增加代碼的可讀性,我在這里面加了一行

      export TOM_DIR=$(TOPDIR)/apps/tom

      這樣,我就可以將自己的代碼放在tom目錄下。

      build/scripts/db12x/Makefile.db12x中定義了多個編譯模塊(暫時這樣稱呼,因為我還不知道其專有名詞),例如iptables_build,samba_build等,這些編譯模塊中的大部分又統一放置于common_mainline中,然后根據/build/scripts/db12x/config.db12x中相應的配置決定啟用哪些編譯模塊,例如本例中config.db12x設定BUILD_ATHR_HOSTAP為1,則根據條件判斷語句編譯如下模塊:

      common_mainline: check_tftp rootfs_prep toolchain_build
      kernel_build kernel_info enet_build busybox_build athr-hostapd athr-wpa_supplicant
      sar cgi lzma_uimage uboot_mainline samba_build
      ntfs3g_build $(stage2_build)

      到這里,相信讀者也一定知道怎樣將自己的代碼編譯進去了,將自己的代碼仿照apps/tom目錄下,在build/scripts/db12x/Makefile.db12x定義一個唯一的模塊如tom_build,并將tom_build添加到common_mainline中即可。

      Hello World

      按照以上思路,將hello.c放在apps/tom目錄下,hello.c的代碼內容如下

      #include <stdio.h>
      int main() {
      printf("Hello Worldn");
      return 0;
      }

      定義tom_build如下

      tom_build:
      @echo making Toms Hello World
      sleep 60
      cd $(TOM_DIR) &&
      $(TOOLPREFIX)gcc hello.c -o hello &&
      cp hello $(INSTALL_ROOT)/sbin/hello

      再次編譯,可以看到正在編譯hello.c的過程( 筆者故意設置了打印信息及暫停60秒),如下

      Making 編譯完成后,首先進入apps/tom目錄,發現已經得到hello可執行文件,使用file命令查看這個可執行文件,結果如下

      File-Hello 看來交叉編譯工具已經正確指定且得到了可在目標板上執行的文件。再次將得到的二進制文件燒寫至Flash,啟動,運行hello,得到了激動人心的“Hello World”。

      hello-world

      下一篇: PLC、DCS、FCS三大控

      上一篇: 為Freescale i.MX6處

      推薦產品

      更多
      主站蜘蛛池模板: 亚洲综合小说久久另类区| 亚洲国产综合久久天堂| 综合亚洲伊人午夜网| 激情综合色五月六月婷婷| 91久久婷婷国产综合精品青草| 91精品国产色综合久久| 91精品一区二区综合在线| 国产精品亚洲综合一区在线观看| 国产成人综合色在线观看网站| 久久一本色系列综合色| 日韩综合在线观看| 综合三区后入内射国产馆| 久久婷婷成人综合色综合| 国内偷自视频区视频综合| 国产综合久久久久鬼色| 97se色综合一区二区二区| 久久丝袜精品综合网站| 综合亚洲伊人午夜网| 久久综合狠狠综合久久97色| 狠狠色狠狠色很很综合很久久| 色与欲影视天天看综合网| 综合一区自拍亚洲综合图区 | 国产色婷婷五月精品综合在线| 色综合色狠狠天天综合色| 色与欲影视天天看综合网| 狠狠色丁香婷婷综合久久来| 国产成人综合久久精品尤物| 一本色道久久综合一区| 色综合久久久无码中文字幕| 亚洲国产精品成人综合色在线 | 综合久久一区二区三区| 人妻一本久道久久综合久久鬼色| 99久久综合精品五月天| 婷婷六月久久综合丁香可观看| 一本色综合网久久| 精品综合久久久久久蜜月| 一本大道无香蕉综合在线| 香蕉久久综合精品首页| 天天爽天天狠久久久综合麻豆| 久久久久青草线蕉综合超碰| 婷婷色香五月激情综合2020|