babyking

  • 2019-01-09
  • 加入了学习《是德两分钟导师系列课程第一季》,观看 触发偶发信号的诀窍

  • 加入了学习《是德两分钟导师系列课程第一季》,观看 神奇的采集模式

  • 发表了主题帖: 芯灵思SinlinxA33 简单QT控制led(io控制)

    本帖最后由 babyking 于 2019-1-9 13:08 编辑 需要之前看过  “SinlinxA33搭建Qt App开发环境编写helloworld”   “芯灵思Sinlinx A33实现linux led驱动” 这两篇帖子,了解QT编程主要代码: #include "widget.h" #include "led.h" #include Widget::Widget(QWidget *parent)     : QWidget(parent) {     Led *led = new Led();  //led对象     QPushButton *led_off = new QPushButton("LED_OFF",this);     QPushButton *led_on =  new QPushButton("LED ON",this);     led_on->setGeometry(75, 50, 75, 40);  //设置按钮位置     led_off->setGeometry(300, 50, 75, 40);              connect(led_off,SIGNAL(clicked(bool)),led,SLOT(led_off()));//消息函数     connect(led_on,SIGNAL(clicked(bool)),led,SLOT(led_on())); }复制代码#include "led.h" Led::Led() { } int Led::led_on(void) {     int fd;     int val = 1;     fd = open("/dev/ledzzzzzzzz", O_RDWR);     if (fd < 0)     {         return -1;     }     else         write(fd, &val, 1);     return 0; } int Led::led_off(void) {     int fd;     int val = 0;     fd = open("/dev/ledzzzzzzzz", O_RDWR);     if (fd < 0)     {         return -1;     }     else         write(fd, &val, 1);     return 0; } Led::~Led(void) { }复制代码

  • 加入了学习《是德两分钟导师系列课程第一季》,观看 噪声基础知识

  • 2019-01-02
  • 发表了主题帖: 芯灵思SinlinxA33开发板 使用MIPI DSI屏幕

    芯灵思SinlinxA33开发板 使用MIPI DSI屏幕 我这里用的是从芯灵思买的mipi屏幕,其它型号屏幕也可以参考 首先准备好相关屏幕驱动mb709_mipi.c 将到mb709_mipi.c 拷贝到linux内核下panels目录 /root/work/sinlinx/a33/lichee/linux-3.4/drivers/video/sunxi/lcd/panels 修改panels目录下panels.c文件 修改上层Makefile文件 在/root/work/sinlinx/a33/lichee/sinlinx_config 添加 lcd相关配置文件dsi1024x600.fex(对这一步疑惑的请看我之前发的帖子 “SinA332.0开发板Linux&Qt调整VGA分辨率为1280x720 ”) 最后重新选择屏幕编译内核,实测可以

  • 2018-12-26
  • 发表了主题帖: 芯灵思SinlinxA33开发板无线wifi设置

    1)启动无线网卡 ifconfig wlan0 up 2)列出可用网络 iwlist wlan0 scan 3)连接到网络热点 iwconfig wlan0 essid "xxxx"     注:xxxx为热点的名字,连接的热点一定不能有密码,否则无法获取IP 地址 4)获取IP 地址 udhcpc -i wlan0

  • 2018-12-25
  • 发表了主题帖: 芯灵思Sinlinx A33实现linux led驱动

    实验原理 在芯灵思开发板上,没有led灯模块,只能通过引脚电平观察: 这里我选择LS-INT引脚。全志A33一共有10组IO口,每组IO有9个相关功能控制器,LS-INT属于PB7,相关寄存器如图本次实验只用到这两个寄存器,在程序中命名为gpio_con,gpio_dat ,设置为输出引脚。1)注册 class_register(class)  将class注册到内核中。调用前,必须手动分配class内存;调用后,必须设置class的name等参数注册 class_create(owner,name)  创建class并将class注册到内核中。返回值为class结构体指针。注销 void class_unregister(struct class *cls)  注销class,与class_register()配对使用。注销 void class_destroy(struct class *cls)     注销class,与class_create()配对使用内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。2)void* ioremap(unsigned long phys_addr , unsigned long size , unsigned long flags)用mmap映射一个设备意味着使用户空间的一段地址关联到设备内存上,这使得只要程序在分配的地址范围内进行读取或写入,实际上就是对设备的访问。解除映射:void iounmap(void* addr)//取消ioremap所映射的IO地址 3)register_chrdev(unsigned int major, const char *name,const struct file_operations *fops);但其实这个函数是linux版本2.4之前的注册方式,它的原理是: (1)确定一个主设备号,如果major=0,则会自动分配设备号 (2)构造一个file_operations结构体, 然后放在chrdevs数组中 (3)注册:register_chrdev,cat /proc/devices查看内核中已经注册过的字符设备驱动(和块设备驱动),注意这里并不是驱动文件设备节点! 4) Linux使用file_operations结构访问驱动程序的函数,这个结构的每一个成员的名字都对应着一个调用5)   class_device_create() 调用class_create为该设备创建一个class,再为每个设备调用 class_device_create创建对应的设备。 大致用法如下:struct class *myclass = class_create(THIS_MODULE, “my_device_driver”); class_device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”); 这样的module被加载时,udev daemon就会自动在/dev下创建my_device设备文件。 总体代码框架 1)先要有file_operations先要有引脚初始化函数myled_init(void),在myled_init里面注册class并将class类注册到内核中,创建设备节点,初始化引脚已经将寄存器地址映射到虚拟内存中,最后调用module_init(myled_init)驱动的加载就靠它 2)创建这个file_operations结构体 static struct file_operations myled_oprs = {         .owner = THIS_MODULE,         .open  = led_open,         .write = led_write,         .release = led_release, };  下面就围绕这个结构体写函数led_write() led_open() led_release() 3)最后要注销设备.... .... 不是很详细,因为详细写起来太多了,附实测代码,参考下 LED驱动代码:#include #include #include #include #include #include #include #include #include #include #include static int major; static struct class *led_class; volatile unsigned long *gpio_con = NULL; volatile unsigned long *gpio_dat = NULL; static int led_open (struct inode *node, struct file *filp) {     /* PB7 - 0x01C20824 */    if (gpio_con) {         printk("ioremap  0x%x\n", gpio_con);         }         else {     return -EINVAL;         }     return 0; } static ssize_t led_write (struct file *filp, const char __user *buf, size_t size, loff_t *off) {      unsigned char val;              copy_from_user(&val, buf, 1);         if (val)         {      *gpio_dat |= (1

  • 2018-12-21
  • 发表了主题帖: 芯灵思Sinlinx A33实现led驱动上

    1)sysconfig配置系统,作为一个通用的软件平台,还希望通过它,可以适应用户不同的方案。通过给出一个对应的配置 用户的方案就可以自动运行,而不需要修改系统里面的代码,或者重新给出参数。 sysconfig生成 script.bin 2)script.bin是什么? script.bin是被全志SOC内核驱动或LiveSuit使用的针对特定目标板的二进制配置文件,包含如何设置基于A10/A20目标版的各种外设,端口,I/O针脚信息。 其对应的可读文本文件格式为FEX,可以利用 Sunxi-tools在二进制和文本文件之间进行转换。更多关于FEX配置的信息可以参考http://linux-sunxi.org/Fex_Guide 3)linux内核有gpiolib标准的gpio操作接口. 但这套接口只能配置输入,输出,获取或设置IO口的电平. 但GPIO口是多功能, 还有上/下拉功能. 全志的GPIO额外的配置在script.bin里指定(有些SOC是提供额外的函数接口来配置). script.bin是由sdk里的工具fex2bin把fex配置文件生成bin文件. bin文件也可由工具bin2fex转成fex文件. 在script.fex里的GPIO配置: Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态> 4)在将uboot和kernel烧写到TF卡之前,需要先编译生成两个启动参数文件:boot.scr和script.bin。

  • 2018-12-19
  • 发表了主题帖: 芯灵思SinlinxA33 SD卡烧写

    工具:         烧写软件:PhoenixCard         读卡器         镜像文件 按图示操作 等待烧写完成 此内容由EEWORLD论坛网友babyking原创,如需转载或用于商业用途需征得作者同意并注明出处 拔出sd卡重新上电,系统烧写完成。

  • 2018-12-18
  • 发表了主题帖: 芯灵思Sinlinx A33开发板串口的使用

    串口在设备文件下显示为: /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 等 ls /dev/ttyS* 开发板连接的是串口ttyS2 执行:echo Today is December 18, 2018 > /dev/ttyS2 串口会接收Today is December 18, 2018 执行:cat  /dev/ttyS2    会等待接收数据,此时在串口助手中发送"I know",终端会显示收到的数据"I know".

  • 2018-12-14
  • 发表了主题帖: 芯灵思SinlinxA33 修改配置文件更改输出串口

    开发平台:芯灵思SinlinxA33 芯灵思linux&qt镜像默认用的是ttyS2串口打印输出,如果想使用其它串口需要修改配置文件,这里我将串口更改为ttyS0,ttyS0和SD卡引脚复用,所以用ttyS0就不能使用SD卡。 Step 1:首先打开配置文件sys_config.fex cd /root/work/sinlinx/a33/lichee/tools/pack/chips/sun8iw5p1/configs/sinlinx/sys_config.fex 根据原理图修改[uart_para]参数 [uart_para] uart_debug_port = 0 uart_debug_tx   = port:PF02<3><1><default><default> uart_debug_rx   = port:PF04<3><1><default><default> 注意:引脚复用需要更改为 3 UART3_RTS Step 2:更改[mmc0_para]参数 [mmc0_para] sdc_used          = 0    禁止SD卡 sdc_detmode       = 2 sdc_buswidth      = 4 sdc_d1            = port:PF00<2><1><2><default> sdc_d0            = port:PF01<2><1><2><default> sdc_clk           = port:PF02<2><1><2><default> sdc_cmd           = port:PF03<2><1><2><default> sdc_d3            = port:PF04<2><1><2><default> sdc_d2            = port:PF05<2><1><2><default> sdc_det           = port:PB04<4><1><2><default> Step :重新编译,烧写镜像,OK

  • 2018-12-13
  • 发表了主题帖: 芯灵思SinlinxA33 lvds屏幕配置

    芯灵思SinlinxA33开发板支持lcd,lvds,dsi屏幕接口,这节通过制作添加lvds配置文件,使其支持lvds屏幕。 打开/root/work/sinlinx/a33/lichee/sinlinx_config目录,新建ldvs1024x600.fex文件 将lcd1024x600.fex文件内容拷贝到ldvs1024x600.fex里面, 修改 lcd_if  = 3 使其支持lvds 修改lcd_lvds_if   = 0 这个根据自己屏幕修改,单连接 or 双连接 lcdd0               = port:PD18<2><0><2><default> lcdd1               = port:PD19<2><0><2><default> lcdd2               = port:PD20<2><0><2><default> lcdd3               = port:PD21<2><0><2><default> lcdd4               = port:PD22<2><0><2><default> lcdd5               = port:PD23<2><0><2><default> lcdd6               = port:PD24<2><0><2><default> lcdd7               = port:PD25<2><0><2><default> lcdd8               = port:PD26<2><0><2><default> lcdd9               = port:PD27<2><0><2><default> 这些引脚也是按照原理图进行配置 然后就是根据屏幕手册修改时序... ... 这样lvds配置文件制作好了 最后根据我之前写的帖子修改     ”SinA332.0开发板Linux&Qt调整VGA分辨率为1280x720“ 最后制作成的镜像就支持lvds显示

  • 2018-12-12
  • 发表了主题帖: SinlinxA33 设置qt程序自启动

    对于开发板开机启动程序的设置可以这样做通过串口连接开发板 #  vi /etc/profile 可以看到黄色框的就是qt自启动的命令,仿照这个替换为自己的qt程序 我的qt程序在 /root/01 程序名字为01 最后开发板上电,可以看到启动程序是自己的qt程序

  • 2018-12-11
  • 发表了主题帖: SinlinxA33搭建Qt App开发环境编写helloworld

    Step 1 在虚拟机(CentOS7)上安装Qt Creator 将qt-creator-opensource-linux-x86_64-3.5.1.run 拷贝到虚拟机中,双击安装,全部点下一步即可。Step 2 Qt Creater 设置打开Qt Creator (Applications->Programming->Qt Creator)1)添加新的设备点击Tools->Options...->Devices点Add 添加新设备,配置如下图所示,其中Host name 处填开发板的IP,用户名root,密码sinlinx (此为开发板linux系统root密码)2)连接好网线,在串口终端设置开发板ip,开启ssh# ifconfig eth0 192.168.0.123 netmask 255.255.255.0# /sinlinx/sshd start点击test按钮,出现下图,说明开发板与虚拟机成功连接3)设置编译运行选项点击Tools->Options...->Build&Run 打开Compilers 选项卡添加编译工具,完成后点Apply 保存。打开Qt Versions 添加QT 版本,完成后点Apply 保存。打开Kits 添加配置。如果没有cmake,需要手动安装cmake yum install cmakeStep 3 编写第一个QT程序打开Qt Creator,新建一个Qt Widgets Application1)添加安装路径打开HelloWorld.pro,在最后添加如下代码:target.path = /root            INSTALLS += target2)添加运行参数 -qws 点击Projects->Run 3)点击运行,会在开发板/root目录生成Hello_World的可执行文件,./Hello_World即可运行

  • 2018-12-10
  • 发表了主题帖: SinA332.0开发板Linux&Qt调整VGA分辨率为1280x720

    Step 1    修改build.sh vim /root/work/sinlinx/a33/lichee/buildroot/target/sinlinx_board/build.sh 添加下面红色字体修改保存 27 if [ $SINLINX_LCD = "lcd800x480" ]; then 28     sed -i "/export QWS_SIZE/c export QWS_SIZE=800x480" rootfs/etc/profile 29 elif  [ $SINLINX_LCD = "lcd1024x600" ]; then 30     sed -i "/export QWS_SIZE/c export QWS_SIZE=1024x600" rootfs/etc/profile 31 else 32     sed -i "/export QWS_SIZE/c export QWS_SIZE=1280x720" rootfs/etc/profile Step 2    修改sinlinx_config.sh vim /root/work/sinlinx/a33/lichee/sinlinx_config.sh 添加下面红色字体修改保存 27 lcds=( 28 "lcd1280x720" 29 "lcd1024x600" 30 "lcd800x480" 31 ) Step 3  复制lcd1280x720.fex文件到/root/work/sinlinx/a33/lichee/sinlinx_config Step 4 重新配置编译镜像文件 ./sinlinx_config.sh ./build.sh ./build.sh pack Step 5 烧写镜像,连接1280x720显示器完美适配 此内容由EEWORLD论坛网友babyking原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2018-12-07
  • 发表了主题帖: SinA332.0开发板怎样从VGA输出改到LCD输出

    全志A33处理器 支持安卓4.4和6.0版本 因为系统源码中的默认配置是VGA 1280*720分辨率输出,所以LCD不能全屏显示 配置成LCD显示:先进入相应目录 cd vendor/softwinner/tools/pack/chips/sun8iw5p1/configs/sinlinx    ln -sf sys_config_1024x600.fex sys_config.fex 再重新进入编译,新内核即可支持1024*600分辨率RGB输出,设置相应文件也可以实现LVDS和MIPI-DSI输出。

  • 2018-12-06
  • 发表了主题帖: SINLINXA33开发板修改开机图片

    SINLINXA33开发板修改开机图片 首先要知道开机图片存在哪里? /root/work/sinlinx/a33/lichee/tools/pack/chips/sun8iw5p1/configs/sinlinx/bootlogo.bmp bootlogo.bmp这个就是开机图片,随便找张图片替代它就可以,注意格式是BMP格式 然后在/root/work/sinlinx/a33/lichee/目录依次运行 ./sinlinx_config.sh ./build.sh ./build.sh pack 生成镜像文件,烧进开发板,OK完成

  • 2018-12-05
  • 发表了主题帖: SInA33开发板怎样烧写镜像文件

    上一节已经制作好了linux镜像文件,现在将它烧入开发板中 需要的工具有#                 SINLINX-A33_qt-4.8.7_lcd1024x600_v3.1  #镜像文件#                 PhoenixSuit                                                 #烧写工具#                 串口线或USB转串口线#                 SINLINX-A33开发板#                 DNW软件 打开PhoenixSuit 软件 点击一键刷机,选择好镜像文件 将开发板的串口线连接好,连接ttyS2串口打开  我的电脑 -> 设备管理器,查看用的是哪一个串口,我这里用的是COM3 再打开dnw软件在配置选项里面选择COM3,波特率115200,点击Serial Port ->connect 出现黄色区域的提示,为正常在dnw上按住键盘数字“2”,给开发板上电 出现这个就可以烧写程序了 此时PhoenixSuit 弹出对话框,选择 “是”,普通升级模式等待烧写完成,拔掉串口线,开发板重新上电,OK

  • 2018-12-04
  • 发表了主题帖: SINA33开发板怎样编译镜像

    对于SINA33开发板编译镜像文件需要先搭建好交叉编译环境,这个搭建环境可以看之前的文档  “SINA33开发板怎样创建编译环境” Step 1 : 编译 QT4.8.7 进入 QT 源码所在路径,直接运行 build.sh 即可,另外可根据自己的需求修改 build.sh 中的 QT 配置选项。 cd /root/work/sinlinx/a33/qt-4.8.7 ./build.sh 编译完成后会自动安装到/opt/qt-4.8.7 目录 如果没有/opt/下没有qt-4.8.7目录或者运行出错,那么重新安装uboot-tools-2011.03-1.el6.x86_64.rpm和rpm -ivh busybox-1.15.1-21.el6_6.x86_64.rpm cd /root/work/sinlinx/a33/tools/pkgs rpm -ivh uboot-tools-2011.03-1.el6.x86_64.rpm rpm -ivh busybox-1.15.1-21.el6_6.x86_64.rpm 再运行./build.sh Step 2 :编译 Linux cd /root/work/sinlinx/a33/lichee ./sinlinx_config.sh ./build.sh 编译完成后有如下提示: 打包镜像文件 ./build.sh pack 完成后会显示镜像 img 文件所在路径: 最后查看下img文件大小 与光盘中的镜像一样大,镜像制作成功[em:tsj04:]

  • 2018-12-03
  • 发表了主题帖: SINA33开发板怎样创建编译环境

    本帖最后由 babyking 于 2018-12-3 15:45 编辑 首先在Vmware安装好Centos,在此不再重复步骤,大家可以看以前的帖子有详细的步骤。本节主要介绍如何在Centos 搭建编译环境 Step 1 更新 CentOS 源 CentOS 由于很追求稳定性,所以官方源中自带的软件不多,因而需要一些第三方源,比如 EPEL、ATrpms、ELRepo、Nux Dextop、RepoForge 等。根据上面提到的软件安装原则,为了尽可能保证系统的稳定性,此处大型第三方源只添加 EPEL 源、Nux Dextop 和 ELRepo 源。安装注意要先打开网络连接 ,若执行 yum install 时提示/var/run/yum.pid 被锁定,可将其删掉后再试。 EPEL : EPEL 即 Extra Packages for Enterprise Linux,为 CentOS 提供了额外的 10000 多个软件包,而且在不替换系统组件方面下了很多功夫,因而可以放心使用。 yum install epel-release      Nux Dextop : Nux Dextop 中包含了一些与多媒体相关的软件包,作者尽量保证不覆盖 base 源。官方说明中说该源与 EPEL 兼容,实际上个别软件包存在冲突,但基本不会造成影响。 rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm ELRepo: ELRepo 包含了一些硬件相关的驱动程序,比如显卡、声卡驱动。 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm 完成以上三个命令后在/etc/yum/repos.d 目录下会生成  epel.repo , nux-dextop.repo, elrepo.repo,三个文件。 安装 yum-axelget yum-axelget 是 EPEL 提供的一个 yum 插件。使用该插件后用 yum 安装软件时可以并行下载,大大提高了软件的下载速度,减少了下载的等待时间。 yum install yum-axelget 全面更新 在进一步操作之前,先把已经安装的软件包都升级到最新版。 yum update 此过程比较长,耐心等待。 Step 2 安装vmware tools 为了在 windows 上右键复制,在虚拟中右键粘贴需要安装vmware tools 直接运行会出现下面情况 这是让我们先卸载 open-vm-tools 运行命令 rpm -e open-vm-tools 出现这种情况只需要运行下面指令 rpm -e open-vm-tools-desktop 然后在运行 ./vmware-tools-distrib 成功安装 Step 3  编译环境搭建 首先准备好将光盘文件 /芯灵思SINA33 V3.1/Linux & QT/source/SINLINX-A33_lichee-src_v3.1.tar.gz /芯灵思SINA33 V3.1/Linux & QT/source/SINLINX_qt-4.8.7_src.tar.gz /芯灵思SINA33 V3.1/Linux & QT/source/SINLINX_qt-compile-tools.tar.gz 在虚拟机上新建目录 用root用户登录Centos mkdir -p /root/work/sinlinx/a33 将源码拷贝至该目录下并解压,在步骤2已经安装了vmware tools,可在 windows 上右键复制,在虚拟中右键粘贴 cd /root/work/sinlinx/a33 tar -xvf SINLINX-A33_lichee-src_v3.1.tar.gz tar -xvf SINLINX_qt-4.8.7_src.tar.gz tar -xvf SINLINX_qt-compile-tools.tar.gz 解压完成后生成 源码结构说明: lichee                         #linux kernel boot rootfstools             pkgs                    #pkgs for CentOS             Toolchain             #cross compile toolchain Qt             qt-4.8.7              #QT4.8 source and compile script 安装交叉编译环境: 将 tools/toolchain/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 解压到/opt 目录 tar -jxvf /root/work/sinlinx/a33/tools/toolchain/arm-2014.05-29-arm-none-linux-gnu.tar.b z2 -C /opt/ 添加环境变量: 修改/etc/bashrc 文件,在最后添加 export PATH=$PATH:/opt/arm-2014.05/bin 安装依赖库 yum install xulrunner.i686 yum install libXtst.i686 yum install texinfo yum install zlib-devel.x86_64 yum install fakeroot cd /root/work/sinlinx/a33/tools/pkgs rpm -ivh uboot-tools-2011.03-1.el6.x86_64.rpm rpm -ivh busybox-1.15.1-21.el6_6.x86_64.rpm Step 4 重启虚拟机,搭建编译环境完成[em:tsj03:] 为了验证是否搭建成功在终端输入 arm-  按tab键 出现这个就说明搭建成功 此内容由EEWORLD论坛网友babyking原创,如需转载或用于商业用途需征得作者同意并注明出处

最近访客

< 1/1 >

统计信息

已有57人来访过

  • 芯币:281
  • 好友:3
  • 主题:67
  • 回复:49
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言