查看: 1020|回复: 0

[评测分享] 【创龙科技TLZ7x-EasyEVM-S评估板试用】创建linux系统

[复制链接]

该用户从未签到

发表于 2022-8-27 17:38:06 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 liujing1232 于 2022-8-27 23:07 编辑

Petalinux制作linux系统1配置
基本配置信息如下:
(1)    配置启动项
启动项设定.png

(2)    配置SD卡分区
启动SD卡分区设置.png

(3)    首选SD启动设置
首选SD设置.png

(4)    主机名设定
主机名设置.png

2文件系统配置
主要包括如下:
(1)    gcc编译支持
gcc编译设置.png

(2)    python支持
python支持设置.png

3 设备树
另一个一个最重要的就是编写设备树文件,主要包括LED以及按键的设备树和axi_uart16550设备树文件的编写,内容如下:
/include/ "system-conf.dtsi"
/ {
       aliases{
              ethernet0= &gem0;
              serial0= &uart1;
       };
       gpio-keys{
           compatible = "gpio-keys";
           #gpio-cells = <2>;
                  SW0 {
                     label= "SW0";
                     #gpio-cells= <2>;
                     gpios= <&axi_gpio_1 0x0 0x0 0x0>;
                     linux,code= <108>;
                     gpio-key,wakeup;
                     autorepeat;
                  };
                  SW1 {
                     label= "SW1";
                     #gpio-cells= <2>;
                     gpios= <&axi_gpio_1 0x1 0x0 0x0>;
                     linux,code= <108>;
                     gpio-key,wakeup;
                     autorepeat;
                  };
                  SW2 {
                     label= "SW2";
                     #gpio-cells= <2>;
                     gpios= <&axi_gpio_1 0x2 0x0 0x0>;
                     linux,code= <108>;
                     gpio-key,wakeup;
                     autorepeat;
                  };
          };
       gpio-leds{
              compatible= "gpio-leds";
              #gpio-cells= <2>;
              led-ld0{
                     label= "led-ld0";
                     #gpio-cells= <2>;
                     gpios= <&axi_gpio_0 0x0 0 0x0>;
                     default-state= "on";
                     linux,default-trigger= "default-on";
                     };
              led-ld1{
                     label= "led-ld1";
                     #gpio-cells= <2>;
                     gpios= <&axi_gpio_0 0x1 0 0x0>;
                     default-state= "on";
                     linux,default-trigger= "default-on";
                     };
              led-ld2{
                     label= "led-ld2";
                     #gpio-cells= <2>;
                     gpios= <&axi_gpio_0 0x2 0 0x0>;
                     default-state= "on";
                     linux,default-trigger= "default-on";
                     };
         };
};
&axi_uart16550_0 {
       status= "okay";
       port-number= <1>;
       current-speed= <57600>;
       xlnx,use-modem-ports= <0x0>;
       xlnx,use-user-ports= <0x0>;
};

&axi_uart16550_1 {
       status= "okay";
       port-number= <1>;
       current-speed= <57600>;
       xlnx,use-modem-ports= <0x0>;
       xlnx,use-user-ports= <0x0>;
};
实验
启动界面如下:
Boot
boot.png

Kernel
kernel.png

登录
denglu.png

从上述界面可知,linux系统启动成功,输入密码和账户名即可。
1查看各项驱动
(1)    gpio驱动
gpio.png

(2)    uart 16550驱动
uart.png

从上述信息可知成功启动了相应驱动。
2 MIO LED实验
该实验的LED实验情况如下:
mio实验.png

实验现象如下:
1.png
代码如下:
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
  int value;
  int export;
  int direction;

   //export GPIO controller
  export = open("/sys/class/gpio/export", O_WRONLY);
   if(export < 0)
   {
     printf("Cannot open GPIO controller export\n");
     exit(1);
   }
  write(export, "909", 4);
  close(export);
  printf("GPIO controller export successfully\n");

   //Modify GPIO controller direction
  direction = open("/sys/class/gpio/gpio909/direction",O_WRONLY);
   if(direction < 0)
   {
     printf("Cannot open GPIO controller direction\n");
     exit(1);
   }
  write(direction, "out", 4);
  close(direction);
  printf("GPIO controller direction changed to outputsuccessfully\n");

   // Modify GPIO controller value
  value = open("/sys/class/gpio/gpio909/value", O_RDWR);
   if(value < 0)
   {
     printf("Cannot open GPIO controller value\n");
     exit(1);
   }

   //Swap GPIO control value each 1 second
  while (1)
   {
     sleep(1);
     write(value,"1", 2);
     printf("GPIO controller value changed to 1 successfully\n");
     sleep(1);
     write(value,"0", 2);
     printf("GPIO controller value changed to 0 successfully\n");
   }
}
3 axi gpio led实验
该实验情况如下:
axi_gpio实验.png

实验如下:
2.png
代码如下:
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
  int led0;
  int led1;
  int led2;

   //export GPIO controller
  led0 = open("/sys/class/leds/led-ld0/brightness", O_WRONLY);
  led1 = open("/sys/class/leds/led-ld1/brightness", O_WRONLY);
  led2 = open("/sys/class/leds/led-ld2/brightness", O_WRONLY);
   if(led0 < 0 | led1 < 0 | led2 < 0)
   {
     printf("Cannot open GPIO controller export\n");
     exit(1);
   }
   write(led0,"0", 2);
   write(led1,"0", 2);
   write(led2,"0", 2);
   //Swap GPIO control value each 1 second
  while (1)
   {
     sleep(1);
     write(led0,"255", 4);
     sleep(1);
     write(led1,"255", 4);
     sleep(1);
     write(led2,"255", 4);
     printf("GPIO controller value changed to 1 successfully\n");
     sleep(1);
     write(led0,"0", 2);
     sleep(1);
     write(led1,"0", 2);
     sleep(1);
     write(led2,"0", 2);
     printf("GPIO controller value changed to 0 successfully\n");
   }
}
4 uart16550实验
根据上述信息可知,串口的驱动字符名为ttyS1和ttyS2,因此实验现象如下:
串口实验.png


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

手机版|小黑屋|与非网

GMT+8, 2024-11-23 04:36 , Processed in 0.117344 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.