暱稱:橋 時間:2014年10月17日 21:36:23
本週已完成:<pre name="code" class="csharp">LED驅動從FPGA到Linux
本週未完成的任務: AD模塊的FMC接口IP核的移植生成*.bit的硬件配置信息文件下週計劃:
把本週未完成的任務做完,進一步熟悉驅動。。
關鍵技術說明
主要根據《Embedded LinuxHands-on Tutorial -- ZedBoard》這篇文檔進行的.
裏面的錯誤有:1、第1-17 步,要在xps_proj/pcores/myled_v1_00_a/hdl/verilog/user_logic.v 文件中加入幾個端口:
代碼如下</p><p></p><pre name="code" class="cpp">54 module user_logic
55 (
56 // -- ADD USER PORTS BELOW THIS LINE ------------------
57 // --USER ports added here
58 LED,
59 // -- ADD USER PORTS ABOVE THIS LINE ------------------
...
74 );
...
86 // -- ADD USER PORTS BELOW THIS LINE -----------------
87 // --USER ports added here
88 output [7 : 0] LED;
89 // -- ADD USER PORTS ABOVE THIS LINE -----------------
...
120 // USER logic implementation added here
121<span style="color:#ff0000;"> LED = slv_reg0[7:0];</span>
在修改myled.v 文件要多加入一句在268行左右加一條
------------------------------------------
2 -- Component declaration for verilog user logic
3 ------------------------------------------
4 component user_logic is
5 generic
6 (
7 -- ADD USER GENERICS BELOW THIS LINE ---------------
8 --USER generics added here
9 -- ADD USER GENERICS ABOVE THIS LINE ---------------
10
11 -- DO NOT EDIT BELOW THIS LINE ---------------------
12 -- Bus protocol parameters, do not add to or delete
13 C_NUM_REG : integer := 1;
14 C_SLV_DWIDTH : integer := 32
15 -- DO NOT EDIT ABOVE THIS LINE ---------------------
16 );
17 port
18 (
19 -- ADD USER PORTS BELOW THIS LINE ------------------
20 <span style="color:#ff0000;"> LED : out std_logic_vector(7 downto 0);</span>
21 -- ADD USER PORTS ABOVE THIS LINE ------------------
22
23 -- DO NOT EDIT BELOW THIS LINE ---------------------
24 -- Bus protocol ports, do not add to or delete
25 Bus2IP_Clk : in std_logic;
26 Bus2IP_Resetn : in std_logic;
27 Bus2IP_Data : in std_logic_vector(C_SLV_DWIDTH-1 downto 0);
28 Bus2IP_BE : in std_logic_vector(C_SLV_DWIDTH/8-1 downto 0);
29 Bus2IP_RdCE : in std_logic_vector(C_NUM_REG-1 downto 0);
30 Bus2IP_WrCE : in std_logic_vector(C_NUM_REG-1 downto 0);
31 IP2Bus_Data : out std_logic_vector(C_SLV_DWIDTH-1 downto 0);
32 IP2Bus_RdAck : out std_logic;
33 IP2Bus_WrAck : out std_logic;
34 IP2Bus_Error : out std_logic
35 -- DO NOT EDIT ABOVE THIS LINE ---------------------
36 );
37 end component user_logic;
否則編譯不過去提示
接這跟文檔繼續做到掛載myled.ko時提示
root@linaro-ubuntu-desktop:~# mount /dev/mmcblk0p1 /mnt/
root@linaro-ubuntu-desktop:~# cd /mnt/
root@linaro-ubuntu-desktop:/mnt# ls
BOOT.BIN led_test.sh logo.bin oled_test.sh
devicetree.dtb led_test.sh~ myled.ko zImage
root@linaro-ubuntu-desktop:/mnt# insmod myled.ko
insmod: error inserting 'myled.ko': -1 Invalid module format
到這裏感覺可能是內核源碼的問題i。。。。只能明天繼續
最後真是內核源碼的問題,最後重新下載 了V3.6版的源碼重新編譯的Zimage文件和設備數文件,
root@linaro-ubuntu-desktop:/mnt# insmod myled.ko
root@linaro-ubuntu-desktop:/mnt# echo 0x0f > /proc/m
meminfo misc modules mounts mtd myled
root@linaro-ubuntu-desktop:/mnt# echo 0x0f > /proc/m
meminfo misc modules mounts mtd myled
root@linaro-ubuntu-desktop:/mnt# echo 0x0f > /proc/myled
root@linaro-ubuntu-desktop:/mnt# echo 0xaa > /proc/myled
root@linaro-ubuntu-desktop:/mnt# ^C
root@linaro-ubuntu-desktop:/mnt#
對應燈就會亮起。。。