tag 标签: dts

相关博文
  • 热度 19
    2015-3-18 09:51
    1907 次阅读|
    5 个评论
    本来这一篇是想写QT的移植,但是它比我想象的要复杂。 我是一定要从mainline,而不是用开发板提供的版本,目前的QT 5.4.1的platform推荐使用EGLFS,它的资料比较少,我对它需要的OpenGL也不熟,所以可能得花相当长的时间,以后再详细的学习。 So, 这个系列到了完结的时候了。 其实比较满意的系列是《 MSP430F2616开发笔记》,相比而言,《为AM335x移植Linux内核主线代码》的废话太多了,因为对于AM335x我是处在学习的状态,而对于MSP430则是有相当的把握,所以语言也会更加准确概括,条理更加清晰。 但勉勉强强也算是交了一份“Linux系统移植的基础操作”的答卷,至少下面的步骤都走过一遍,设计的时候能够做到心里有数: (核心板使用OK335xD) 底板的PCB设计; 到U-Boot的调试; 内核的运行; 文件系统的加载; (QT的移植) 从今天开始踏入嵌入式工程师的大门,以此文纪念我这段什么都没有,又好像什么都有了的时光。  
  • 热度 21
    2015-3-10 09:37
    1670 次阅读|
    0 个评论
    http://www.cnblogs.com/hicjiajia/archive/2012/07/10/2582642.html http://www.tldp.org/HOWTO/Bootdisk-HOWTO/x21.html http://www.linux-pages.com/2011/03/cannot-execute-etc-init-d-rcs/ http://blog.sina.com.cn/s/blog_6fe0d70d01010mod.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Step 1: 编译busybox: 从官方网站下载busybox-1.23.1.tar.bz2,并解压: $ mkdir busybox-1.23.1-v1 $ tar xvf busybox-1.23.1.tar.bz2 -C busybox-1.23.1-v1/ $ cd busybox-1.23.1-v1/ $ cd busybox-1.23.1/ $ make CROSS_COMPILE=/opt/gcc-linaro-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- menuconfig $ make CROSS_COMPILE=/opt/gcc-linaro-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- all install 通过menuconfig可以修改编译选项,使用静态链接的编译方式(由于make报错,因此去掉inetd工具); 这里使用动态链接的话,在INIT阶段无法执行任何程序,目前还不知道原因; 编译完成之后在此目录下会生成_install目录。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Step 2:创建系统文件目录,复制库文件、设备文件,以及init.sysvint: $ mkdir dev etc media mnt lib tmp proc var sys root home $ cp /opt/gcc-linaro-arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabi/* lib/ -rvf $ cp ../../rootfs/lib/libext2fs.so.2* lib/ $ cp ../../rootfs/lib/libcom_err.so.2* lib/ $ cp ../../rootfs/lib/libblkid.so.1* lib/ $ cp ../../rootfs/lib/libcrypto.so.1.0.0* lib/ $ cp ../../rootfs/lib/libe2p.so.2* lib/ $ cp ../../rootfs/lib/libncursesw.so.5* lib/ $ cp ../../rootfs/lib/libss.so.2* lib/ $ cp ../../rootfs/lib/libtinfo.so.5* lib/ $ cp ../../rootfs/lib/libusb-* lib/ $ cp ../../rootfs/lib/libuuid.so.1* lib/ $ cp ../../rootfs/dev/ . -r $ cp ../../rootfs/sbin/init.sysvinit sbin/ 这里拷贝lib是因为,之前编译busybox采用了动态方法(使用ldd可查看库依赖); 暂时借用Forlinx的dev文件; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Step 3:将_install里面的内容,放置到SD卡的rootfs分区: 修改SD的boot分区的uEnv.txt文件,如下: bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 init=/sbin/init.sysvinit mem=256M rootwait bootcmd=mmc rescan; fatload mmc 0 0x82000000 uImage; fatload mmc 0 0x83000000 maria-am335x.dtb; bootm 0x82000000 - 0x83000000 uenvcmd=boot 注意这里的root和init的值。 root是根文件系统所在的存储区,init是Kernel调用的第一个用户空间的程序;所有的进程都将由init程序展开。由于busybox自带的init程序不支持runlevel,因此使用sysvinit,在Kernel Command Line里指定即可。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Step 4: 编辑/etc目录: # ls -al total 68 drwxr-xr-x. 12 root root 4096 Mar  9 14:17 . drwxr-xr-x. 15 root root 4096 Mar  9 13:08 .. drwxr-xr-x.  2 root root 4096 Mar  9 13:11 default -rw-r--r--.  1 root root  288 Mar  9 13:20 fstab -rw-r--r--.  1 root root  478 Mar  9 11:49 group drwxr-xr-x.  2 root root 4096 Mar  9 14:04 init.d -rw-r--r--.  1 root root  366 Mar  9 14:12 inittab -rw-r--r--.  1 root root  762 Mar  9 11:49 passwd drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc0.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc1.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc2.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc3.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc4.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc5.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rc6.d drwxr-xr-x.  2 root root 4096 Mar  9 14:13 rcS.d -r--------.  1 root root  506 Mar  9 14:17 shadow default目录下存放了rcS文件,里面是基础的配置; rc*.d目录下暂时为空; init.d目录下是很关键的rcS和rc文件,它是系统的启动脚本; fstab文件是存储区列表; group、passwd、shadow是用户登录相关的文件; inittab被init.sysvinit读取,从而决定进入哪个runlevel。 然后就可以启动的打印信息就会多了这些: Freeing unused kernel memory: 340K (c084f000 - c08a4000) INIT: version 2.88 booting INIT: Entering runlevel: 3 MARIA login: root login : root login on 'ttyO0' ~ # ls /etc/ default  group    inittab  rc0.d    rc2.d    rc4.d    rc6.d    shadow fstab    init.d   passwd   rc1.d    rc3.d    rc5.d    rcS.d ~ # ~ # cd /tmp/ /tmp # ./hello Hello, world! 另外,刚做好的文件系统是Read-only file system,只能读取不能写,因此还需要进行下面的操作: /proc # cat mounts rootfs / rootfs rw 0 0 /dev/root / ext3 ro,relatime,errors=continue,barrier=1,data=ordered 0 0 devtmpfs /dev devtmpfs rw,relatime,size=112644k,nr_inodes=28161,mode=755 0 0 proc /proc proc rw,relatime 0 0 /proc # mount -o remount,rw /dev/root 现在就可以在任何目录下创建文件啦~~~ /home # mkdir 123 /home # ls 123 至此为止,文件系统就算是移植成功。 剩下的最后一节内容,是QT图形界面的移植。  
  • 热度 24
    2015-3-10 09:34
    2337 次阅读|
    1 个评论
    本来应该接着上节,进行LCD触摸屏的调试,但是USB鼠标要简单一些,因此先调试它。 HUB采用了芯片USB2514,配合两个双路USB电流监测芯片TPS2052,实现4路USB,因此首要的任务是Kernel需要识别这个HUB,并且将4路USB的电源打开。 ================================================================ http://processors.wiki.ti.com/index.php/AM335x_USB_Driver%27s_Guide http://processors.wiki.ti.com/index.php/UsbgeneralpageLinux-v3p1 Step 1: 添加dts代码: usb {         status = "okay"; }; usb_ctrl_mod {         status = "okay"; }; usb0_phy {         status = "okay"; }; usb0 {         status = "okay";         dr_mode = "host"; }; cppi41dma  {         status = "okay"; }; 由于我的电路板是usb0为host,usb1没有使用,因此按照上面的修改maria-am335x-common.dtsi文件。 Step 2: 在make menuconfig中选中: → Device Drivers → USB support  *   Inventra Highspeed Dual Role Controller (TI, ADI, ...)  *     Platform Glue Layer --- (X) TI DSPS platforms  MUSB DMA mode --- TI CPPI 4.1 (AM335x)   其他地方都不用修改。 Note:如何确定make menuconfig时的选项呢?根据设备的compatible值,查看Makefile和Kconfig即可。 例如,在dts文件中关于usb的部分是: compatible = "ti,am33xx-usb"; 因此,使用grep命令找到对应的driver文件: $ grep -rn ti\,am33xx-usb Binary file built-in.o matches Binary file usb/built-in.o matches Binary file usb/musb/built-in.o matches Binary file usb/musb/musb_am335x.o matches usb/musb/musb_am335x.c:24:    { .compatible = "ti,am33xx-usb" }, 再查看usb/musb/下的Makefile和Kconfig即可。 编译后加载到target板运行,会发现启动时的打印信息多了下面这些: usb 1-1.1: USB disconnect, device number 4 usb 1-1.1: new low-speed USB device number 5 using musb-hdrc usb 1-1.1: New USB device found, idVendor=1c4f, idProduct=0003 usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-1.1: Product: Usb Mouse usb 1-1.1: Manufacturer: SIGMACHIP input: SIGMACHIP Usb Mouse as /devices/ocp/47400000.usb/47401400.us2 hid-generic 0003:1C4F:0003.0003: input: USB HID v1.10 Mouse usb 1-1.1: USB disconnect, device number 5 CAUTION: musb: Babble Interrupt Occurred usb 1-1: USB disconnect, device number 2 musb-hdrc musb-hdrc.0.auto: Restarting MUSB to recover from Babble musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory usb 1-1: new high-speed USB device number 6 using musb-hdrc usb 1-1: New USB device found, idVendor=0424, idProduct=2514 usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 hub 1-1:1.0: USB hub found hub 1-1:1.0: 4 ports detected 执行下面的命令: root@ok335x:/sys/bus/usb/devices# ls 1-0:1.0  1-1      1-1:1.0  usb1 root@ok335x:/sys/bus/usb/devices# cd 1-1 root@ok335x:/sys/bus/usb/devices/1-1# ls 1-1:1.0              bmAttributes         maxchild authorized           busnum               port avoid_reset_quirk    configuration        power bConfigurationValue  descriptors          quirks bDeviceClass         dev                  removable bDeviceProtocol      devnum               remove bDeviceSubClass      devpath              speed bMaxPacketSize0      driver               subsystem bMaxPower            ep_00                uevent bNumConfigurations   idProduct            urbnum bNumInterfaces       idVendor             version bcdDevice            ltm_capable root@ok335x:/sys/bus/usb/devices/1-1# cat idProduct 2514 root@ok335x:/sys/bus/usb/devices/1-1# cat idVendor 0424 到这里,可知Kernel驱动USB的基本步骤没有问题了,剩下的工作是如何使用USB设备,此处不再赘述。 下一节的内容是文件系统的移植。  
  • 热度 21
    2015-3-3 16:33
    3181 次阅读|
    0 个评论
    硬件更改: LCD的引脚分布见下面这个帖子!它不是RGB的顺序!之前调试U-Boot的时候是弄错了的。 http://elinux.org/24bit_LCD_for_BBB 在Kernel中调试LCD是出乎意料的简单: ~~~~~~~~~~~~~~~~~~~~ LCD的背光,目前是由LM2733控制的,只有ON和OFF两个状态,因此它的操作也很简单,直接在maria-am335x-commom.dts文件的leds项下添加: led@2 {         label = "backlight:lm2677";         gpios = gpio3 17 GPIO_ACTIVE_HIGH;         default-state = "off"; }; led@3 {         label = "display:on";         gpios = gpio2 22 GPIO_ACTIVE_HIGH;         default-state = "on"; }; 以及: core_led: pinmux_core_led {         pinctrl-single,pins =                 0x1E8 (PIN_OUTPUT | MUX_MODE7)  /* emu1.gpio3_8 */                 0x19C (PIN_OUTPUT | MUX_MODE7)  /* mcasp0_ahclkr.gpio3_17 */         ; }; 这样背光就会点亮了。 这里使用了普通的GPIO作为驱动LM2733,来点亮背光;如果想要调整背光亮度,则需要在LM2677的负载输出的硬件上增加一个三极管,并且在kernel中添加PWM代码。它并不复杂,不再赘述。 接下来是调试LCD的显示部分: ====================================================================== http://processors.wiki.ti.com/index.php/AM335x_LCD_Controller_Driver%27s_Guide http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Linux_Board_Port#Adding_LCD_and_Touchscreen_Support http://processors.wiki.ti.com/index.php/Linux_Core_LCD_Controller_User_Guide Step 1:在make menuconfig中: → Device Drivers → Graphics support → Frame buffer Devices 选中:“DA8xx/OMAP-L1xx/AM335x Framebuffer support” 在make menuconfig中:  → Device Drivers → Graphics support → Direct Rendering Manager 选中:“DRM Support for TI LCDC Display Controller”: Step 2: 在dts文件中添加: / {         panel {                 compatible = "ti,tilcdc,panel";                 pinctrl-names = "default";                 pinctrl-0 = lcd_pins_default;                 status = "okay";                 panel-info {                         ac-bias         = 0;                         ac-bias-intrpt  = 0;                         dma-burst-sz    = 16;                         bpp             = 32;                         fdd             = 0x80;                         sync-edge       = 0;                         sync-ctrl       = 0;                         raster-order    = 0;                         fifo-th         = 0;                 };                 display-timings {                         native-mode = timing0;                         timing0: 480x272 {                                 hactive         = 480;                                 vactive         = 272;                                 hback-porch     = 1;                                 hfront-porch    = 1;                                 hsync-len       = 45;                                 vback-porch     = 1;                                 vfront-porch    = 1;                                 vsync-len       = 16;                                 clock-frequency = 9000000;                                 hsync-active    = 0;                                 vsync-active    = 0;                         };                 };         };         /* 其他子项 */ };          am33xx_pinmux {         pinctrl-names = "default";         lcd_pins_default: lcd_pins_default {                 pinctrl-single,pins =                         0x20 (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad8.lcd_data23 */                         0x24 (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad9.lcd_data22 */                         0x28 (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad10.lcd_data21 */                         0x2c (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad11.lcd_data20 */                         0x30 (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad12.lcd_data19 */                         0x34 (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad13.lcd_data18 */                         0x38 (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad14.lcd_data17 */                         0x3c (PIN_OUTPUT | MUX_MODE1)   /* gpmc_ad15.lcd_data16 */                         0xa0 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data0.lcd_data0 */                         0xa4 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data1.lcd_data1 */                         0xa8 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data2.lcd_data2 */                         0xac (PIN_OUTPUT | MUX_MODE0)   /* lcd_data3.lcd_data3 */                         0xb0 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data4.lcd_data4 */                         0xb4 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data5.lcd_data5 */                         0xb8 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data6.lcd_data6 */                         0xbc (PIN_OUTPUT | MUX_MODE0)   /* lcd_data7.lcd_data7 */                         0xc0 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data8.lcd_data8 */                         0xc4 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data9.lcd_data9 */                         0xc8 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data10.lcd_data10 */                         0xcc (PIN_OUTPUT | MUX_MODE0)   /* lcd_data11.lcd_data11 */                         0xd0 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data12.lcd_data12 */                         0xd4 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data13.lcd_data13 */                         0xd8 (PIN_OUTPUT | MUX_MODE0)   /* lcd_data14.lcd_data14 */                         0xdc (PIN_OUTPUT | MUX_MODE0)   /* lcd_data15.lcd_data15 */                         0xe8 (PIN_OUTPUT | MUX_MODE0)   /* lcd_pclk.lcd_pclk */                         0xec (PIN_OUTPUT | MUX_MODE0)   /* lcd_ac_bias_en.lcd_ac_bias_en */                 ;         };         /* 其他mux */ }; lcdc {         status = "okay"; }; 就这两个步骤之后,就会发现初始化的打印信息多了(箭头部分是我添加的): Initialized drm 1.1.0 20060810 ======== tilcdc_drm_init ======== tilcdc_tfp410_init ======== tilcdc_slave_init ======== tilcdc_panel_init ======== panel_probe ==== get timings ==== get info ==== bpp = 32 ======== tilcdc_pdev_probe Supports vblank timestamp caching Rev 2 (21.10.2013). No driver support for vblank timestamp query. Console: switching to colour frame buffer device 60x34 tilcdc 4830e000.lcdc: fb0:  frame buffer device tilcdc 4830e000.lcdc: registered panic notifier Initialized tilcdc 1.0.0 20121205 on minor 0 执行下面的命令: tftp -g -l 3color_2.bmp -r 3color_2.bmp 192.168.1.118 cat 800*480.bmp /dev/fb0 就会发现屏幕上有显示图片了(现在的显示是有重影的,以后再更改),另外,由于我使用的是Forlinx的文件系统,因此可以启动时是QT的界面。另外,由于24根RGB引脚的分配问题,现在的LCD色调有点奇怪,在第二版的硬件中会做相应的更改。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 是不是很简单?是不是很简单?简直是难以置信的简单! 虽然因为把“okay”拼写成“okey”浪费了我很多很多的时间,但实际上它原本的代码非常容易,all you need to do is在dts文件中添加设备就好了,这也说明Linux Kernel是非常简易且健壮的!
  • 热度 21
    2015-3-2 10:35
    1530 次阅读|
    0 个评论
    一口老血喷到屏幕上! 请自动略过之前的第36~40小节=_=!!! ===================================== http://www.tuicool.com/articles/UvmuEv 我的电路板存在的问题是:由于布线(杜邦线)导致的干扰,只能通信在10Mbps,而不能通信在100Mbps。 之前的尝试是想修改ioctl配置,但其实方法很简单,就是使用ethtool工具,简单直接快速! root@ok335x:~# ethtool eth0       root@ok335x:~# ethtool -s eth0 autoneg off root@ok335x:~# ethtool -s eth0 duplex full root@ok335x:~# ethtool -s eth0 speed 10 root@ok335x:~# ifconfig eth0 up root@ok335x:~# ifconfig eth0 192.168.1.118 netmask 255.255.255.0 root@ok335x:~# ping 192.168.1.118 ping 192.168.1.118 PING 192.168.1.118 (192.168.1.118): 56 data bytes 64 bytes from 192.168.1.118: seq=0 ttl=64 time=1.971 ms 64 bytes from 192.168.1.118: seq=1 ttl=64 time=1.144 ms 64 bytes from 192.168.1.118: seq=2 ttl=64 time=1.068 ms  
相关资源
  • 所需E币: 0
    时间: 2020-8-24 16:19
    大小: 140.5KB
    上传者: xiaosh728
    从零开始学习ARM嵌入式系列——驱动设备树DTS的简介与例子
  • 所需E币: 5
    时间: 2019-12-26 10:51
    大小: 57.5KB
    上传者: 微风DS
    在Linux下用Qt开发新一代DTS图形数据系统的分析……
  • 所需E币: 3
    时间: 2019-12-25 15:41
    大小: 210.14KB
    上传者: 二不过三
    基于MPEG-2传输流,针对手机电视接收端系统层中节目特殊信息的作用及工作原理、传输流解复用过程和视音频信源同步实现等问题进行了解析,指出了MPEG-2系统同步机制的不足,提出了改进意见,并以韩国手机电视标准T-DMB为例,实现了手机电视系统层.手机电视接收端系统层解析与实现李立宏1,黄金2(1.南昌大学软件学院,江西南昌330029;2.哈尔滨工业大学软件学院,黑龙江哈尔滨150001)摘要:基于MPEG一2传输流,针对手机电视接收端系统层中节目特殊信息的作用及工作原理、传输流解复用过程和视音频信源同步实现等问题进行了解析,指出了MPEG一2系统同步机制的不足,提出了改进意见,并以韩国手机电视标准T―DMB为例,实现了手机电视系统层。关键词:手机电视MPEG一2复用同步AnalysisandimplementationofmobilephoneteleVisionreceiVersystemlayeruuHonF,HuANGJin2(1.Sch00lofsonw㈣,N∞ch蛐……
  • 所需E币: 3
    时间: 2020-1-1 23:40
    大小: 1.53MB
    上传者: 2iot
    通过高度集成的光学测量系统,实现快速、可靠、经济的传感功能介绍了分布式温度传感的应用方向:•石油和天然气钻井性能监测•管道泄漏检测•电子电缆监测•消防预警检测N4385A/N4386A分布式温度传感系统(DTS)通过高度集成的光学测量系统,实现快速、可靠、经济的传感功能分布式温度传感石油和天然气钻井性能监测管道泄漏检测电子电缆监测消防预警检测基于光纤的分布式温度传感技术较电子传感器的优势我们在特定的危险应用中测试了安捷伦DTS设备,结果给我们留下了非常深刻的印象。安捷伦在产品中采用严格的质量设计标准。集成度和独特的光学组装技术保证了可重复的精确测量及简便部署能力。Grosswig博士,GESO首席执行官如果您正努力在各种应用领域中提高生DTS采用Raman效应测量温度。通过光纤传播的激光器光脉冲产效率或安全保护能力,您可以使用光会把散射后的光返回发射端,然后纤作为传感单元,深入查看各个流程。可以进行分析。Raman散射的强度光纤是唯一没有遗留未监测区域、本身可以衡量光纤上的温度。温度读数非常安全(EMI)的传感解决方案。位置通过测量返回光脉冲的到达时间确定,这有点类似于雷达回声。无忧永久监测……
  • 所需E币: 5
    时间: 2020-1-3 18:49
    大小: 1.08MB
    上传者: givh79_163.com
    在数字电视终端MPEGII解码器测试中,解码能力测试是一个很关键的环节,即验证在前端输入码流满足TR101290标准的前提下接收终端能正常解码,输出同步的视音频模拟信号。PCR抖动是影响接收终端解码的关键因素。……