1. xilinx-zynq soc與嵌入式linux設計實戰指南 怎麼樣
本書系統介紹了XilinxZynq7000SoC與嵌入式Linux設計方法與實踐。全書以ZynqPS(ARMCortexA9)為核心,以ZynqPL(FPGA)為可編程外設,詳細介紹了從底層硬體系統到上層操作系統及GUI設計原理和方法,詳細講解了底層外設介面控製程序、嵌入式Linux操作系統移植以及應用程序。全書共分14章,內容包括Zynq初體驗、Zynq集成開發環境、Zynq啟動流程及鏡像製作、GPIO原理及實現、中斷原理及實現、定時器原理及實現、通用非同步收發器原理及實現、OLED原理及實現、Zynq雙核運行原理及實現、嵌入式Linux系統構建、嵌入式Linux系統實現、uboot原理及移植、Linux內核原理及移植和嵌入式網路視頻設計及實現。
本書由淺入深,從最簡單的流水燈、HelloWorld開始,使讀者可以完成裸機控製程序設計、嵌入式Linux環境搭建、嵌入式操作系統移植以及應用程序設計等。
本書理論與實踐相結合,可以作為信息類專業大學本科高年級和研究生的教學參考用書,也可作為從事嵌入式系統設計的工程技術人員參考用書。
2. zynqmp 怎麼將linux系統下載到emmc
1,vivado硬體配置,要選擇EMMC代表的SD1;
2,編譯petalinux:執行petalinux-config。
(1)選擇Subsystem AUTO Hardware Setting
-> Advanced bootable images storage settings
->boot image settings;
選擇primary flash,這里是將BOOT.bin設置為從qspi flash啟動
(2)選擇Subsystem AUTO Hardware Setting
-> Advanced bootable images storage settings
->kernel image settings;
選擇primary sd,進入後我們看到這里實際就是設置image.ub的存放區域。
(3)選擇Image Packaging Configuration,設置啟動啟動文件系統所在位置;
在設置啟動方式的時候,如下兩張圖這樣設置讀取根文件系統的位置/dev/mmcblk1p2。
(4)設置你的驅動然後編譯,依次執行:petalinux-config -c kernel;petalinux-config -c rootfs;
petalinux-build;petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force;
3,做之前先分區(把EMMC分區),先做一個SD卡啟動的petalinux文件,
petalinux系統在zynq上面啟動起來以後就進行如下分區:即是mmcblk1分為mmcblk1p1和mmcblk1p2
具體步驟如下:
(1) 把EMMC進行分區,執行命令: fdisk /dev/mmcblk1
(2)使用n命令,添加一個新的分區
Command (m for help): n
Command action
e extended
p primary partition (1-4)
選擇p,添加主分區
,(3)選擇分區號,選擇1,
Partition number (1-4): 1 // 選擇分區號
First cylinder (1-238592, default 1): Using default value 1 // 選擇分區的第一個柱面,選擇1
Last cylinder or +size or +sizeM or +sizeK (1-238592, default 238592): Using default value 238592 // 選擇最後一個柱面
注意:1-238592,first要選第一個數,last要選擇的比238592小,其中1024就是表示1M
(4)使用t命令,設置分區格式
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (Win95 FAT32)
(5)使用w命令,保存配置,必須保存配置
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
(6)使用對應文件系統工具對分析進行格式化(只能在debian裡面才能識別命令)
mkfs.fat /dev/mmcblk1p1 設置為fat32格式
mkfs.ext4 /dev/mmcblk1p2設置為ext4格式
注意:執行完w命令然後才算分區成功,執行完mkfs命令才算格設置內存屬性成功。
以上分區完成後,可以使用p命令,顯示分區信息;也可以使用用d命令表示刪除分區
Command (m for help): p
Disk /dev/mmcblk0: 7818 MB, 7818182656 bytes
4 heads, 16 sectors/track, 238592 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 238592 7634936 83 Linux
(7)執行這句:mkdosfs -F 32 /dev/mmcblk0p1
當然,可以重復上述步驟,多分幾個區,用來存放不同的狀態:
FLASH要要用來存放BOOT.bin
第一個分區用來存放image.ub或者設備樹(比如uImage和devicetree.dtb)等文件;--可以設置為128MB
第二個分區用來存放用戶數據(比如可執行程序);可以設置為2048MB
第三個分區用來存放程序執行需要的庫文件(opencv的庫,qtcreator庫,相機庫,視頻編碼解碼庫等);剩餘的1個多GB
4,把系統同步到ext4裡面
先把sd卡裡面系統掛載進來 :mount /dev/mmcblk0p2 /mnt
再把剛剛弄好的系統掛進來: mount /dev/mmcblk1p2 /tmp , 然後cd /mnt
然後進入把SD卡裡面的系統同步到emmc裡面:rsync -av ./* /tmp ,時間有點久,直到結束為止。
(要是不用SD卡也可以掛載U盤,解壓,然後進行系統同步到EMMC所掛載的地方/tmp)
5,然後將BOOT.BIN和image.ub燒錄到QSPI-FLASH中
首先擦除QSPI-FLASH:flash_eraseall /dev/mtd0
存放BOOT.bin到flash : flashcp BOOT.bin /dev/mtd0
此處若是將image.ub寫入emmc的FAT分區中(不存放到flash中),先使用mount掛載eMMC的FAT分區,
然後將image.ub使用cp指令拷貝進 /mnt/mmcFat即可,也就是把uImage 拷貝到 /dev/mmcblk1p1;
進入uImage所在目錄,然後執行 cp uImage /tmp;也就是把uImage存放到了 /dev/mmcblk1p1裡面。
6,最後斷電拔出SD卡,將撥碼開關設置為flash啟動,就能看到petalinux啟動起來;
7,報錯及其解決辦法
————————————————
版權聲明:本文為CSDN博主「寒聽雪落」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wangjie36/article/details/104740448/
3. 新手求教,Zynq平台linux開發流程以及Nand Flash啟動的修改
直接在 Windows 系統用 Eclipse 開發出 java ,然後,把開發好並編繹好的 java 程序拿到 Linux 去運行,這個是最直接,最簡單,最容易的開發 java 的方法了。
4. 如何在Linux系統中直接操作GPIO
方法/步驟
1
安裝SD Linux系統
如圖所示,先後將Arino Software 1.5.3 (Arino IDE)和SD-Card Linux Image下載到本機,Arino IDE在後面查找GPIO與Arino IO 之間的映射關系時需要用到。
如圖所示,將SDCard1.0.4.tar.bz2解壓後出現一個「image-full-galileo」的文件夾。
在MicroSD使用前需先將其以Fat32進行格式化,然後將「image-full-galileo」文件夾下地所有文件直接拷貝到microSD卡的根目錄下。
進入Galileo
將MicroSD插到Galileo中,在路由器頁面的已連接設備列表中會看到設備名稱為「clanton」有線連接設備,找到其IP地址,然後中
Terminal(Unix和Linux,Windows可用Putty)中通過ssh進入Galileo,「ssh
[email protected]」。
有意思的是,這個在MicroSD中運行的Linux系統開啟了ssh服務,並且root賬號沒有設置密碼,可以直接進入。如上圖所示,彈出一對話框後輸入 「yes」回車即可進入Galileo,出現下圖中的 「root@clanton」說明這一步成功完成了
到這里,可能會有疑問了,Galileo板載也是有一個操作系統的,microSD卡中也有一個Linux,如何保證現在進入的就是microSD卡中的系
統呢?在Terminal中輸入「cat/proc/version」即可查看Linux系統版本,顯示為「3.8.7-yocto-standard」,這就是前面下載的為Galileo定製的Linux操作系統,Yocto。
找到那個屬於你的GPIO
下面就要開始這篇文章中的核心部分,也是最難的一部。找Linux GPIO 與 Arino IO之間的映射關系!
如右圖所示,在「/sys/class/gpio/」中有多大60多個GPIO,如何找出右側GPIO與左側Arino IDE中對應的IO呢。
首先將0-13IO口全部設為「INPUT」輸入模式
voidsetup(){//putyoursetupcodehere,torunonce:
pinMode(0,INPUT); pinMode(1,INPUT); pinMode(2,INPUT); pinMode(3,INPUT);
pinMode(4,INPUT); pinMode(5,INPUT); pinMode(6,INPUT); pinMode(7,INPUT);
pinMode(8,INPUT); pinMode(9,INPUT); pinMode(10,INPUT);
pinMode(11,INPUT); pinMode(12,INPUT); pinMode(13,INPUT); } voidloop(){
//putyourmaincodehere,torunrepeatedly: }
如圖所示,左側"pinMode(13,OUTPUT)"將13引腳變為輸出模式,右側gpio7變成out模式,因此gpio7對應的就是Arino IO 13(pin13)
按照這種方法依次找出Arino IO與GPIO之間如下的對應關系
GPIODigitalI/Ogpio11pin0
gpio12pin1 gpio13pin2 gpio14pin3 gpio6pin4 gpio0pin5 gpio1pin6
gpio38pin7 gpio40pin8 gpio4pin9 gpio10pin10 gpio5pin11 gpio15pin12
gpio7pin13
下面就需要來對上面找到的gpio對應關系進行驗證了。「echo "out"
>/sys/class/gpio/gpio*/direction」為將gpio變為輸出模式,「echo "1"
>/sys/class/gpio/gpio*/value」為將gpio輸出高電平。然後就有了下面這段python程序,這段程序依次將
pin13,pin12,pin11,pin10四個引腳的LED點亮然後關閉,但由於python程序的執行效率問題,應該所有LED同時點亮有了延時
成為流水燈,如下圖所示效果。這段程序在Linux系統的任意文件夾內均可。
importos,timewhileTrue:os.system('echo"out">/sys/class/gpio/gpio7/direction')
os.system('echo"1">/sys/class/gpio/gpio7/value')
os.system('echo"out">/sys/class/gpio/gpio15/direction')
os.system('echo"1">/sys/class/gpio/gpio15/value')
os.system('echo"out">/sys/class/gpio/gpio5/direction')
os.system('echo"1">/sys/class/gpio/gpio5/value')
os.system('echo"out">/sys/class/gpio/gpio10/direction')
os.system('echo"1">/sys/class/gpio/gpio10/value') time.sleep(0.2)
os.system('echo"0">/sys/class/gpio/gpio5/value')
os.system('echo"0">/sys/class/gpio/gpio15/value')
os.system('echo"0">/sys/class/gpio/gpio7/value')
os.system('echo"0">/sys/class/gpio/gpio10/value') time.sleep(0.2)
5. 求教linux下的gpio輸入驅動的一點問題
ker_buf[0] =gpio_get_value(LED_GPIO_1); //獲取管腳上的值
在這後面加一條printk語句,將ker_buf[0]的值列印出來,判斷讀取的值有沒有問題?
如果讀出來一直是0,那你就檢查IO口的配置有沒有問題!
if (_to_user(buf, ker_buf, 2)) //數據從內核空間往用戶空間的拷貝
return -EFAULT;
這條語句,你第一貼得代碼是2,後面那次是對的
6. 如何學習zynq乙太網控制器及協議棧
第 9 章 ZedBoard 入門
前面大家已經對 ZYNQ 架構以及相應的開發工具有一定的認識,接下來我們將帶領大家來一起 體驗 ZYNQ,體驗軟硬體協同設計的魅力。由於時間的關系,下面的一些實驗(本章及後續章節的實驗) 可能有不完善的地方,歡迎讀者向我們反饋。 9.1 跑馬燈 本實驗將指導大家使用 Vivado 集成設計環境創建本書的第一個 Zynq 設計。這里,我們使用跑馬燈 這個入門實驗來向大家介紹 Vivado IDE 的 IP Integrator 環境,並在 Zedboard 上實現這個簡單的 Zynq 嵌 入式系統。之後,我們將會使用 SDK 創建一個簡單的軟體應用程序,並下載到 Zynq 的 ARM 處理器中, 對在 PL 端實現的硬體進行控制。本實驗分為三個小節來向大家進行介紹: ? 第一節我們將使用 Vivado IDE 創建一個工程。 ? 在第一節的基礎上,第二節我們將繼續構建一個 Zynq 嵌入式處理系統,並將完成後的硬體導入 到 SDK 中進行軟體設計。 ? 最後一節我們將使用 SDK 編寫 ARM 測試應用程序, 並下載到 ZedBoard 上進行調試。 實驗環境:Windows 7 x64 操作系統, Vivado2013.4,SDK 2013.4
9.1.1 Vivado 工程創建
1) 雙擊桌面 Vivado 快捷方式 ,或者瀏覽 Start > All Programes > Xilinx Design Tools > Vivado
2013.4 > Vivado 2013.4 來啟動 Vivado. 2) 當 Vivado 啟動後,可以看到圖 9-1 的 Getting Started 頁面。
圖 9- 1 Vivado 開始界面
3) 選擇 Create New Project 選項,圖 9-2 所示的 New Project 向導將會打開,點擊 Next。
圖 9- 2 New Project 對話框 4) 在 Project Name 對話框中,輸入 first_zynq_design 作為 Project name, 選擇 C:/XUP/Zed 作為 Project location,確保 Create project subdirectory 被勾選上,如圖 9-3,點擊 Next。
圖 9- 3 Project Name 對話框 5) 在 Project Type 對話框中,選擇 RTL Project,確保 Do not specify sources at this time 選項沒有 被勾選,如圖 9-4,點擊 Next。
圖 9- 4 Project Type 對話框 6) 在 Add Source 對話框中, 選擇 Verilog 作為目標語言,如果你對 VHDL 熟悉的話, 你也可以 選擇 VHDL,如果這里你忘記了選擇,在工程創建完成後,也可以在工程設置中選擇你熟悉的 HDL 語言。如果你已經有了源文件,在這里就可以選擇 Add file 或者 Add directory 進行添加, 由於我們沒有任何的源文件, 所以這里我們直接點擊 Next 即可,如圖 9-5。
圖 9- 5 添加源文件 7) 在 Add Existing IP 對話框中,點擊 Next。 8) 在 Add Constraints 對話框中,點擊 Next。 9) 在 Default Part 對話框中,在 Specify 框中選擇 Boards 選項,在下面的 Board 列表中選擇 ZedBoard Zynq Evaluation and Development Kit,點擊 Next,如圖 9-6。
圖 9- 6 晶元選擇 10) 在 New Project Summary 對話框中,點解 Finish 完成工程創建,至此,我們已經使用 Vivado 創建了一個 Zynq 設計的工程框架,圖 9-7 為 Vivado 的工程界面,在第四章我們已經對該界面 進行過介紹,如果還不熟悉的讀者再回到前面復習一下。下面我將使用 Flow Navigator 的 IP Integrator 功能完成第二節的嵌入式系統設計。
圖 9- 7 Vivado 工程界面
9.1.2 在 Vivado 中創建 Zynq 嵌入式系統 這一節我們將創建一個簡單的 Zynq 嵌入式系統,該系統使用 Zynq PL 部分實現一個通用 I/O 控制 器 (GPIO),控制器同 ZedBoard 上的 8 個 LED 相連接,並且通過 AXI 匯流排連接到 PS 端,這樣我們就可 以通過將要在第三小節中實現的 ARM 應用程序來對 LED 進行控制。系統結構圖如圖 9-8 所示。
7. 如何在zynq上掛linux
第一章就直接讓你把linux掛起來了 假如你有ZC702或者ZC706的話 如何在zynq上掛linux_第一章.pdf
8. zynq兩個gpio之間怎麼切換中斷
因為中斷的內核控制路徑在恢復時需要的所有數據都存放在被中斷進程的內核棧中,如果發生了進程切換,那麼在恢復時就找不到之前的那個進程,因為也就不能夠獲得那個進程的內核棧中的數據,使得中斷能夠正確的退出。
9. zynq上跑linux系統,然後pl中有加入一個axi4的ip,ip中有多個寄存器
你在XPS里配置好了引腳沒。你如果用測試函數都不行,那應該是配置問題或者硬體問題。一般都是通信沒ACK,像你這般直接沒信號的我覺得還是XPS沒配置好
10. zynq支持的linux的發行版有哪些
沒錯,現在的linux對中文支持都很好,只要裝了中文支持用的字體都一樣ukai, uming, wyq,最多就是動手改一下配置