MIO および EMIO ピンを介して PS に接続された GPIO を制御するために、 Linux ドライバー ( Linux-GPIO-Driver )に関する xilinx wiki に従いました。
次に、AXI バスで PS に接続された PL にいくつかの基本的なペリフェラルを追加しました。これは私のデザインです:
PL ペリフェラル情報を含むこのファイルは、デバイス ツリー ソースで自動的に生成されました。
/ {
amba_pl: amba_pl {
#address-cells = <1>;
#size-cells = <1>;
compatible = "simple-bus";
ranges ;
axi_gpio_0: gpio@41200000 {
#gpio-cells = <2>;
compatible = "xlnx,xps-gpio-1.00.a";
gpio-controller ;
reg = <0x41200000 0x10000>;
xlnx,all-inputs = <0x0>;
xlnx,all-inputs-2 = <0x0>;
xlnx,all-outputs = <0x0>;
xlnx,all-outputs-2 = <0x0>;
xlnx,dout-default = <0x00000000>;
xlnx,dout-default-2 = <0x00000000>;
xlnx,gpio-width = <0x4>;
xlnx,gpio2-width = <0x20>;
xlnx,interrupt-present = <0x0>;
xlnx,is-dual = <0x0>;
xlnx,tri-default = <0xFFFFFFFF>;
xlnx,tri-default-2 = <0xFFFFFFFF>;
};
axi_gpio_1: gpio@41210000 {
#gpio-cells = <2>;
compatible = "xlnx,xps-gpio-1.00.a";
gpio-controller ;
reg = <0x41210000 0x10000>;
xlnx,all-inputs = <0x1>;
xlnx,all-inputs-2 = <0x0>;
xlnx,all-outputs = <0x0>;
xlnx,all-outputs-2 = <0x0>;
xlnx,dout-default = <0x00000000>;
xlnx,dout-default-2 = <0x00000000>;
xlnx,gpio-width = <0x4>;
xlnx,gpio2-width = <0x20>;
xlnx,interrupt-present = <0x0>;
xlnx,is-dual = <0x0>;
xlnx,tri-default = <0xFFFFFFFF>;
xlnx,tri-default-2 = <0xFFFFFFFF>;
};
axi_gpio_2: gpio@41220000 {
#gpio-cells = <2>;
compatible = "xlnx,xps-gpio-1.00.a";
gpio-controller ;
reg = <0x41220000 0x10000>;
xlnx,all-inputs = <0x1>;
xlnx,all-inputs-2 = <0x0>;
xlnx,all-outputs = <0x0>;
xlnx,all-outputs-2 = <0x0>;
xlnx,dout-default = <0x00000000>;
xlnx,dout-default-2 = <0x00000000>;
xlnx,gpio-width = <0x4>;
xlnx,gpio2-width = <0x20>;
xlnx,interrupt-present = <0x0>;
xlnx,is-dual = <0x0>;
xlnx,tri-default = <0xFFFFFFFF>;
xlnx,tri-default-2 = <0xFFFFFFFF>;
};
};
};
上記のすべてのパラメーターは、フォルダー内の linux-device-tree に表示されます: /sys/firmware/devicetree/base/amba_pl
例: /sys/firmware/devicetree/base/amba_pl/gpio@41200000
これらのファイルを見つけることができます
#gpio-cells
compatible
gpio-controller
linux,phandle
name
phandle
reg
xlnx,all-inputs
xlnx,all-inputs-2
xlnx,all-outputs
xlnx,all-outputs-2
xlnx,dout-default
xlnx,dout-default-2
xlnx,gpio-width
xlnx,gpio2-width
xlnx,interrupt-present
xlnx,is-dual
xlnx,tri-default
xlnx,tri-default-2
また、(/sys/bus/platform/drivers で) カーネル menuconfig で有効にしたオプションに対応する gpio に関連するドライバーを見つけました。これらのドライバーに関するドキュメントは、drivers-on-gpio にあります。
しかし、正直なところ、zynq の PL 側でジェネリック IP を管理し、通信する方法がまだわかりません (この例では、LED とボタンを axi インターフェイスを介して PS に接続して再生したいと考えています)。
私がしなければならないことは、メモリ内の読み取り/書き込み操作で遊ぶことだと思います。私が従う必要がある方法について何か情報を教えていただけますか?このタスクに関連する情報源を知っていますか? xilinx-tools によって自動的に生成された適切なドライバーを管理する方法と見つける場所の例はありますか? どんなサポートにも感謝します!
これの目標は、AXI に接続された汎用 IP を制御するための基本を学ぶことです。