This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Sitara AM335x系列资源小合集[2017/02/08更新中……]

Other Parts Discussed in Thread: UNIFLASH, SYSBIOS, AM3352, AM3354, TMDXEVM3358, AM3359

随着用户不断的增多,越来越多的对于资源方面的咨询,这里开一个主帖,各个楼层独立话题,把一些比较分散的资源做个汇总,方便大家索引。

另外,针对一些常见的问题,和疑难杂症之类的, 我也会更新到这个帖子中来。

大家有什么问题,或者想知道的某个话题,可以在这个帖子中给我留言,我会根据实际的case,找个案例分析,总结分享出来。

因为会不断更新,所以形式可能就不拘一格了,分楼层完成了后我就会更新到主贴的目录中。

PS: 如果下面的问题解析对你有用,请帮忙在主贴中对应的topic下面Vote一下。我们后续会根据这个的反馈情况,考虑增加相应的topic到我们的在线视频支持中。

畅所欲言!欢迎拍砖!

目录:

1. AM335x 软件编译指南:Linux SDK/Processor SDK -- Uboot/Kernel 编译移植入门。[poll]

2. DDR2/3的配置详解(带视频)。[poll]

3. AM335x关于使用USB启动烧录的问题--Uniflash。 [poll]

4. AM335x的休眠唤醒调试。[poll]

5. AM335x Linux SDK 6.0 最小文件系统

6. TBD

7. TBD

8. 论坛用户总结搜集贴(包含外部资源链接)

  • 1. AM335x 软件编译指南:Linux SDK/Processor SDK -- Uboot/Kernel 编译移植入门。

    如果是第一次开发AM335x,会发现我们的软件资源非常多,比如Linux,TI-RTOS,RT-Linux等。Linux使用的频率最高,问到的人也最多,这里稍微整理一下:

    首先我们的Linux发布的软件包有AMSDK(老版本)和Processor SDK(后来都整合叫这个名字了),按照发行的时间如下所示:(包含了下载地址)

    AM335x Linux SDK 6.0  kernel 3.2 http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/06_00_00_00/index_FDS.html
    AM335x Linux SDK 7.0  kernel 3.12 http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/07_00_00_00/index_FDS.html
    AM335x Linux SDK 8.0  v3.14.26 http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/latest/index_FDS.html
         
    Processor SDK 1.0.0.0 v3.14.26 http://software-dl.ti.com/sitara_linux/esd/processor-sdk/PROCESSOR-SDK-LINUX-AM335X/01_00_00_00/index_FDS.html
    Processor SDK 1.0.0.3 v3.14.43 http://software-dl.ti.com/sitara_linux/esd/processor-sdk/PROCESSOR-SDK-LINUX-AM335X/01_00_00_03/index_FDS.html
    Processor SDK 2.0.0 v4.1 http://software-dl.ti.com/processor-sw/esd/PROCESSOR-SDK-LINUX-AM335X/02_00_00_00/index_FDS.html
    Processor SDK 2.0.1 v4.1.13 http://software-dl.ti.com/processor-sw/esd/PROCESSOR-SDK-LINUX-AM335X/02_00_01_07/index_FDS.html
    Processor SDK 2.0.2 v4.1.18 http://software-dl.ti.com/processor-sw/esd/PROCESSOR-SDK-LINUX-AM335X/02_00_02_11/index_FDS.html
    Processor SDK 3.0.0 v4.4.12 http://software-dl.ti.com/processor-sdk-linux/esd/AM335X/latest/index_FDS.html

    Processor SDK 6.03 Kernel V4.19.

     
    Version
    Linux Kernel
    GCC
     
     
    PROCESSOR-SDK-LINUX-AM335X
    v06.01  
    v4.19
     
     
     PROCESSOR-SDK-LINUX-AM335X
    06_00_00_07
    4.19.38+ (2019 LTS)
    8.3 2019.03 hard-float
     
     PROCESSOR-SDK-LINUX-AM335X
    05_03_00_07
    4.14.79+ (2018 LTS)
    Linaro Toolchain (gcc) 7.2-2017.11 hard-float
     
     PROCESSOR-SDK-LINUX-AM335X
    05_02_00_10
    4.14.79+ (2018 LTS)
    Linaro Toolchain (gcc) 7.2-2017.11 hard-float
    2018.01
     PROCESSOR-SDK-LINUX-AM335X
    05_01_00_11
    4.14.67+ (2018 LTS)
    Linaro Toolchain (gcc) 7.2-2017.11 hard-float
    2018.01
     PROCESSOR-SDK-LINUX-AM335X
    05_00_00_15
    4.14.40+ (2018 LTS)
    Linaro Toolchain (gcc) 7.2-2017.11 hard-float
    2018.01
     PROCESSOR-SDK-LINUX-AM335X
    04_03_00_05
    4.9.69+ (2017 LTS)
    Linaro Toolchain (gcc) 6.2.1 2016.11 hard-float
    2017.01
     PROCESSOR-SDK-LINUX-AM335X
    04_02_00_09
     
     
     
     PROCESSOR-SDK-LINUX-AM335X
    04_01_00_06
     
     
     
     PROCESSOR-SDK-LINUX-AM335X
    04_00_00_04
     
     
     
     PROCESSOR-SDK-LINUX-AM335X
    03_03_00_04
     
     
     
     PROCESSOR-SDK-LINUX-AM335X
    03_02_00_05
     
     
     
     PROCESSOR-SDK-LINUX-AM335X
    03_01_00_06
     
     
     


    经常碰到的情况,很多人用的是Linux SDK 6.0, Kernel3.2的版本。其实在6.0的版本之前,还有5.4、5.5、5.6、5.7等一系列的版本,都是基于Kernel3.2的,可以说TI在这个版本上经历了很长的时间,所以目前有大量用户是基于这个版本的,因此关于这个版本的资料还是比较多的。但是这个版本的kernel是基于board configure file的,没有device tree。从SDK 7.0开始,到后面的Processor SDK,都是使用了device tree,这点是很大的不同。

    有人可能会问,为啥从Processor SDK(PDK)开始变了命名和架构?因为Processor SDK开始,TI在努力把自己的处理器产品A8/A9/A15/A15+DSP都整合在一个PDK的架构里,方便平滑的进行软件切换。这样以后如果大家有升级的需求,本来用A8的现在想用A15,就仍然可以使用对应的PDK来进行A15的编译,这样就不用花精力在搞清楚软件架构是怎样,该如何编译上面。

    版本的更迭中在不同版本之间的差异,可以参考:http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_Release_Notes

    下面关于不同版本的编译方法进行介绍:

    如果使用的是Processor SDK版本的,请参考:

    http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_Software_Developer%E2%80%99s_Guide

    如果使用的是Linux SDK 6.0版本的,请参考:

    Uboot User Guide:http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide

    Kernel User Guide: http://processors.wiki.ti.com/index.php/AMSDK_Linux_User%27s_Guide

    Module User guide:http://processors.wiki.ti.com/index.php/AM335x_PSP_User%27s_Guide

    如果使用的是Linux SDK 6.0之前版本的,请参考:

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Software_Developer%E2%80%99s_Guide

  • 2. DDR2/3的配置详解(带视频)

    DDR的配置讲解文档已经有很多了,版上搜一搜就可以看到很多:

    DDR3 软件 Leveling和寄存器参数配置:http://www.deyisupport.com/question_answer/f/25/t/17684.aspx

    DDR3设计与调试小结:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/30143.aspx

    这里我总结了一个PDF,言简意赅的把这个配置的流程,以及流程中经常出现的问题都标识出来了。对于大家经常问到的,还是不知道一些具体的参数怎么配的问题,我在这个文档对应的优酷视频中有比较仔细的讲解,希望对大家有帮助。

    TI Sitara AM335x DDR3 Configuration & Software leveling

    下面就是对应的两个优酷视频,第一个是讲解配置的注意事项,第二个是用一个实例来录制配置的过程,这是一个实际的案例,正好拿过来做范例。

    TI Sitara AM335x DDR3配置讲解:
    http://v.youku.com/v_show/id_XMTY1NzE2NjY1Ng==.html

    TI Sitara AM335x DDR3配置实例讲解:
    http://v.youku.com/v_show/id_XMTY1NzE4ODUwNA==.html

    PS: AM335x Linux SDK 6.0 Download地址:

    http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/06_00_00_00/index_FDS.html

    有些朋友反馈公司不给看视频的,可以参考下面是针对这个流程中的详细解释:

    1.      EMIF的配置
    a.      TIMING1,2,3的配置
    简而言之,这一步骤是要根据当前你的板子上所使用的DDR型号,找到对应的datasheet,然后根据datasheet填入我们的AM335x DDR Calculation tool (.zip)中。
    这一步骤很简单,就是在使用的DDR的手册中搜对应的关键参数值,然后填到黄色的数字中,最终这个excel表会生成TIMIGN1,2,3这么三组参数值,最终即为我们需要用到的三个参数值。
    b.      SDRAM_CONFIG 的配置
    根据使用的DDR手册,来配置该寄存器,该寄存器的详细描述参考AM335x的TRM手册的7.3.5 EMIF4D Registers章节,偏移量为8h的即为SDRAM_CONFIG寄存器,把关键性的配置核查一下,阻抗匹配之类的,就用原来的推荐值就可以了。
    这两个步骤可以参考:http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
    2.      PHY的配置
    这里只需要将DDR_CK和DQS的几个长度量出来,填入Ratio Seed Spreadsheet中。该Excel表会自动算出对应的参数值。特别注意:在量取长度的时候应取从管脚到管脚间的走线,不要算上了匹配电阻走线部分的长度。
    3.      DDR3 software leveling
    如果是DDR3,还需要一步是做software leveling。在上述两个步骤完成后,你得到的那些参数值,填入到最新的配置中,将步骤2得到的数值作为种子值输入到算法中,算法会自动为你计算得到一组最优解。如果你使用了UART0作为调试串口,主时钟为24MHz,可以SD卡启动的话,可以参考该方法来进行software leveling:https://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/53263.aspx

    如果没有UART0作为调试串口的话,则需要使用JTAG进行该算法,参考:
    http://processors.wiki.ti.com/index.php/AM335x_DDR_PHY_register_configuration_for_DDR3_using_Software_Leveling
    至此,如果得到了最优解,则DDR3的配置就算完成了,把上述配置的参数以及最优解设置到你的板级配置文件中即可。

  • 3. AM335x关于使用USB启动烧录的问题—Uniflash

    大家知道AM335x是可以直接使用USB启动的,一般来说可以用来做启动烧录。这种情况下,需要在PC机上,装一个软件:Uniflash,用USB线连接到板子上,设置好主机端的文件和参数即可进行USB烧录。

    特别提示:这个工具的适用场景,不是什么工作也没做,就想直接启动板子进行烧录;而是在你完成了整个系统移植过程后,可以使用该工具来进行USB启动烧录。换言之:若要使用Uniflash,必须要先完成Linux部分的移植。下面会对这个原因进行详细的解释。

    两个常见问题

    如果连上了USB,发现PC机都没有识别出板子:首先,确认板子用于启动的USB0的电路设计,必须要能工作在USB device的模式上。再者,确认你的PC机有权限进行USB操作,并且一定要把防火墙关掉。

    如果是连上了板子,能发现,但是烧录出现卡在0%,Flash in progress的情况,多数都是因为启动文件的编译配置有问题,这也是今天要讲的重点。我之前写过一个帖子,介绍了这个PC环境的搭建和文件的制作流程:

    http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/52381.aspx

    这里,我要重申刚才提到的一点:若要使用Uniflash,必须要先完成Linux部分的移植!

    因为Uniflash的工作原理是使用USB先传送移植好的SPL(MLO)和u-boot.img到板子上,让板子启动起来,然后在uboot环境下(如果是eMMC就需要到kernel下),通过debrick脚本来进行文件的传送、烧录(此时传送的文件因为只是image,所以不管是Linux/Android/RTOS都可以)。所以刚开始传送的用以启动板子的SPL(MLO)和u-boot.img,必须要基于Linux移植完成才可以正常使用,否则Uniflash就会出现卡在0%,Flash in progress的情况。

    所以,对于那些想使用该工具进行烧录的Android,RTOS的用户,就需要多做一步,就是要先移植Linux的uboot,以确保板子可以正常启动,我在上面的帖子中也有提过大致的流程,按照下面流程做了之后,建议先使用SD卡或者其他的启动方式,把移植好的image先尝试启动一下,确保这个步骤是没有问题的,然后就可以进行烧录了。

    非Linux用户的移植简介:

    由于该Uniflash工具也可以烧写Android,RTOS等非Linux操作系统的image,这里有一些简单的tips,方便那些使用非Linux的客户,更快速的将Uniflash的烧写环境搭建起来,下文以NAND flash作为示例:

    1. 首先由于Uniflash必须要使用Linux的Uboot作为烧写固件的一部分,所以请先下载AM335x Linux SDK 6.0开发包:http://software-dl.ti.com/sitara_linux/esd/AM335xSDK/latest/index_FDS.html

    2. 下载完成后在Linux主机上进行安装,安装完成后,根目录下的board-support/u-boot-2013.01.01-psp06.00.00.00文件夹即为Linux uboot的源码,需做部分修改后编译。编译方法可参考:http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide

    3. Linux uboot需要修改的部分:这部分工作就是对Linux uboot进行移植的工作,主要修改的有三处地方:EEPROM, DDR2/3, NAND FLASH(包括pinmux)

    3.1 对于EEPROM操作的修改:由于在官方的开发板上,都会有EEPROM来进行板子的型号辨识,不同板子资源不同,配置也就不同,因此该处的配置会影响到DDR的配置以及NAND flash的配置;一般来说客户自己的开发板上没有eeprom,所以要对此处进行修改。文件位置:uboot的根目录/board/ti/am335x/board.c文件中搜索"eeprom“既可找到配置的地方。

    3.2 对于DDR的配置的修改:因为板子上可能使用DDR2或者DDR3,要根据实际情况对UBOOT进行修改。在uboot的根目录/board/ti/am335x/board.c文件中搜索"config_ddr“既可找到配置的地方。

    3.3 对于NAND FLASH的修改:这里最常遇到的问题是,选择的板卡并没有对NAND flash进行Pinmux的设置,简单的解决方法是:在uboot/board/ti/am335x/mux.c文件中,在 void enable_board_pin_mux (struct am335x_baseboard_id *header)这个函数实现的第一句中加入

    configure_module_pin_mux(nand_pin_mux); 确保nand的Pinmux配置成功。对于NAND Flash的位宽配置,时序参数配置,可参考TRM中的7.1 GPMC章节。其中,常用的NAND位宽配置(8bit和16bit)在GPMC_CONFIG1的13-12bit位上。

  • 4. AM335x的休眠唤醒调试

    最近遇到了几个休眠唤醒的case,正好借这个机会做一个总结:

    我们知道AM335x支持多种低功耗模式,其中在TRM中有非常详细的介绍。这里我们着重介绍Deepsleep0这种模式,也被称作suspend mode,因为很多人在做低功耗的设计时,都会考虑让芯片的功耗能达到最低,而suspend模式下AM335x的单芯片功耗是可以达到5mW的,可以说还是能让大部分场景满意的。特别说明下,我说的5mW是指单芯片功耗,不包括外设以及电源效率。实测数据,可以参考下面的链接,这些都是基于GPEVM板上对每一个电源轨做出的实际测试数值:

    http://processors.wiki.ti.com/index.php/AM335x_Power_Consumption_Summary

    接下来让我们进入正题,如果你的芯片休眠有问题,如何测试,首先先按照我们给的这个链接进行一下相关的排查工作。

    processors.wiki.ti.com/.../Debugging_AM335x_Suspend-Resume_Issues

    对于Deepsleep0(suspend)模式无法正常工作,一定要确认到地是睡下去了,还是没能唤醒。可以通过下面两个地方进行确认:

    1. 主时钟:OSC0 is disabled at the end of suspend and enabled at the first step of resume. 

    2. DDR CKE信号:CKE signal goes low when DDR is put in self-refresh in suspend and goes high when DDR goes out of self refresh in resume.

    多数情况下,都是在没睡下去发生的问题。如果是通过上面两个信号确认是没睡下去,以下几点可以作为重点排查对象:

    1. DDR3的设计和配置。在DDR3的设计中一定要注意VTT的设计,如果有设计VTT,在休眠时,要注意是否使用了GPIO口来控制该VTT的使能。如果没有做GPIO的控制,也就是你在休眠的时候VTT也是在正常工作的,那么你需要在sleep33xx.S这段汇编中注释掉VTP处理部分的代码,否则会有一定概率出现suspend挂死的情况。如果是使用了GPIO控制VTT(在休眠时可以关掉),或者没有VTT设计的话,就只需要正确的对DDR3进行配置即可。

    2. GPIO的设置,如果是deepsleep0模式,能够唤醒的GPIO只能是位于GPIO0组。选择了GPIO0组对应的IO后,一定要配置他的使能,和休眠唤醒的属性,参考我们的SDK6.0的代码如下:

    3. RTC的处理:

    由于设置internal RTC disabled,而在kernel中没有取消register。

    解决方法:

    (1)需要在.config中注释掉以下设置:CONFIG_RTC_DRV_OMAP

    具体实现,需要在menuconfig中的Device driversàReal Time Clock中去掉选中。

    (2)在HWMOD中取消RTC部分的注册

    在linux源码的arch/arm/mach-omap2/omap_hwmod_33xx_data.c中进行修改:

    在结构体中am33xx_hwmods[]

    注释掉:

    /* rtc class */

          &am33xx_rtc_hwmod,

    (3)注释掉你在board-support/linux-3.2.0-psp04.06.00.11/arch/arm/mach-omap2/board-am335xevm.c文件中使用结构体中的相关RTC配置,类似如下:

    {am335x_rtc_init, DEV_ON_BASEBOARD, PROFILE_NONE},

     如果还是有问题,就需要通过代码来定位现在卡住的位置了。这部分后面再做详解。

  • 5. AM335x最小文件系统

    一般来说,在我们官方发布的Linux SDK开发包中都带有两个文件系统,一个是组件全的(ti-sdk-....),一个是组件空的(arago-base...)。全的大概有300M+的样子,即使是那个小的,也大概有30M+的样子。

    所以相信很多朋友在最终做产品的时候都会有这样的需求,剪裁文件系统到10M左右的大小甚至更低,这时候就需要大家自己努力了。

    最近在debug其他的问题的时候因为必须要搞个小的文件系统,所以在网上找了找,发现给uniflash烧录eMMC的文件系统大小还是挺合适的,适用于SDK6.0D的才11M左右,新版本PDK用的才7.4M。

    亲测了一下SDK6.0的做基本的一些启动功能,和休眠唤醒都没有什么问题,做成initramfs的时候整个uImage也就只有7.78M,做debug用再合适不过了。

    所以这里把资源share给大家

    Linux SDK 6.0 Filesystem:

    PDK Filesystem:

    另外偶然发现用busybox做文件系统的一个guide,不过是给OMAP35平台的,AM335x的应该也差不了太多。暂时没时间深究,留待之后有机会再深入理一下:

    http://processors.wiki.ti.com/index.php/Creating_a_Root_File_System_for_Linux_on_OMAP35x


  • 8. 这个楼层,我会专门用来更新在论坛上看到的有用的总结帖和问题贴。

    关于AM335X移植SDIO WIFI的简易教程

    http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/127565.aspx



  • AM335X经常出现电源短路问题
    您好!我们在设计中使用了AM335X器件(AM335xBZCZD),package Drawing是ZCZ的,该款器件的供电采用了独立的电源芯片TPS65217B,目前出现这么一个情况,当我板子上与AM335X无关的其他电源出现问题时,如VCC_3V3或者5V根本没有给AM335X供电,当VCC_3V3或者5V出现短路或者误操作的时候,甚至操作所涉及的电路与AM335X没有直接或者间接的联系(除了共地),就是这样都可能会导致AM335X的I/O电源短路!我想咨询一下这种情况之前是否有人反馈过?另这种情况是否是地传导引起芯片损坏还是怎么回事?盼复。谢谢!

  • 目前我并没有经历过你说到的这种案例,但是有些案例,是在335x没上电的情况下,就有信号电平进去,导致芯片损坏的情况。所以如果你的电路中有些管脚是通过电阻下拉,你提的这种经过地传过去打坏片子,不是没有可能。

    注意AM335x的datasheet 5.1 Absolute Maximum Ratings 的note:如下

    (8) This parameter applies to all IO terminals which are not fail-safe and the requirement applies to all values of IO supply voltage.

    For example, if the voltage applied to a specific IO supply is 0 volts the valid input voltage range for any IO powered by that supply will be –0.5 to +0.3 V.

    Apply special attention anytime peripheral devices are not powered from the same power sources used to power the respective IO supply.

    It is important the attached peripheral never sources a voltage outside the valid input voltage range, including power supply ramp-up and ramp-down sequences.

  •   总结的非常好,受益匪浅!

  • 你好,

        咨询一下。非常感谢

    问题:

    1.Linux,TI-RTOS,RT-Linux

    这三个如何选择?

    就个人讲:linux系统,用过dm3x系列的; sysbios用过c67xx系列的。RT-linux没有用过。

    使用场景:主要做一个高速数据搬移,GMAC<--->GPMC,净荷平均流量小于200Mbps,linux系统的话考虑1ms中断。

    2.如果选择linux

       我准备使用AM3352来做开发,哪一个版本是经过 验证比较稳定的版本?不知道您有没有建议?

    3.如果选择其他os,后面再讨论。

    非常感谢:)

  • 您好,

    您这个帖子提到了选择时钟的问题,请教一下。

    背景:我准备选择am3352,主要使用到的外设接口包括但不限于GMAC/GPMC/SPI/UART/DDR等。

    其中,GMAC与GPMC是业务数据口,会承载高速数据。(200mbp以下)其他都是慢速控制接口。

    问题:

    19.2/24/25/26MHz几种频率如何选择,有没有哪个文档,或者有一个统一建议说明的?

  • 我只想给你说声谢谢, 其他的不多说了,都在泪里。

  • 你好!

    针对于第一个环境选择的问题:

    如果是强实时的场景选择,建议使用TI-RTOS,这个其实就是sysbios。是TI发布的免费的实时操作系统,其中断响应时间等实时特性是很强的。一般在工业实时运用的场景中应用比较多。

    Linux目前可以说使用的范围非常广泛,再加上开发起来有很多的资料可以参考,基于Linux QT的界面开发手段又非常多样,所以使用的场景也就很多了。但是对中断的相应时间相对RTOS来说还是差了很多的,毕竟任务排队、系统调度的时间在那里摆着。

    RT-Linux,可以说是在Linux的基础上增加了实时的一些特性,是基于RT-PREEMPT来做的具有实时特性的linux,其中断响应速度在Linux和RTOS之间。

    第二个,如果是选择Linux的话,从TI推行的角度来说,肯定是建议使用最新的processor sdk,毕竟新的东西产品线直接支持的力度比较大。不过要是轮资料和使用人群来说,个人认为还是Linux SDK 6.0相对较多,因为很多人都在这个版本上做过开发,所以这个版本可以说是经历了很多的试炼了,他有的一些局限,在release notes中有描述。另外很大的差距在于Linux SDK 6.0是使用的board config file来做的配置,但是新版的processor sdk是使用了device tree的架构。所以我觉得你选择哪个版本都行,主要看你用哪个架构顺手。

    上面我说的这两个版本都可以在TI的官网中下载到,有其他的疑问,请再联系我

  • 其实这个只是给一些有特殊需求的用户更多的选择而已。

    一般来说,我们所有的开发板和Linux sdk中都是使用的24MHz主时钟,这个选择没有什么差异,就是在分频的时候分频值的选取不一样了而已。所以如果可以的话,我建议使用24MHz的时钟,这样一来,你做软件移植的时候需要改动的地方就很少了。

  • 非常感谢答复。

    担心:选择不合适的晶振,是uart-boot启动时uart的波特率不是标准波特率,例如115200,无法与pc机通信,导致无法uartboot起来。

    问题的背景是:我们之前选择dm3x的一个处理器,手册提示可以选择多种晶振频率。

    但实验证明,只有选择24MHz时,uartboot才能正常启动,这时串口波特率是115200,

    选择36MHz时,uartboot的波特率是115200*1.5。但是pc机无法准确分频出115200*1.5这个波特率,误差太大,导致无法通信。

    结论:那我们就选择24MHz了。

    所有有此一问,感谢:)

  • 我对你说的dm3x系列的情况不熟悉,但是根据你的描述,当改变晶振为其他数值的时候按理来说,在sysboot的引脚配置上,和软件的配置上都需要有对应的改动,才可以保证最终的输出结果值是正确的,按照你的这个说法,应该是软件上分频的数值相关设置没有设置正确导致的才对。总之在AM335x的这个平台上,4个晶振频点的选择,都有人做过,是没有问题的。24MHz的好处,就是不用再次修改配置的值,因为我们默认的设置都是24MHz,仅此而已。

  • 好的,多谢。那我们就选择24MHz了。

    有关DM36X的晶振问题,实验结论如下,仅供了解。

    0.DM36X处理器在uartboot下,上电会在串口打印bootme。

    以下为从示波器观察

    1.如果单板焊接24MHz晶振,uartboot模式上电,处理器上电打印的bootme是按照115200的波特率打印的。

    2.如果单板焊接36MHz=1.5*24MHz晶振,uartboot模式上电,处理器上电打印的bootme是按照115200*1.5的波特率打印的。

    而此时处理器中应该运行的是RBL,开发用户无法介入。

    供了解。

    谢谢

  • 您好,

    介于您的建议,我们考虑选择Linux SDK 6.0。有关开发环境的疑问,您抽空帮忙看下。

    1.virtualbox虚拟机,建议版本是哪个?

    2.ubuntu的建议版本是哪个?

    3.ubuntu是否可以使用10.04 LTS版本?因为我们之前基于DM36X开发,用的就是10.04。

    4.编译工具链使用哪个比较好?从网站上,也了解到存在多款编译器。

    谢谢:)

  • 《sitara-linuxsdk-sdg-06.00.00.00》

    文档里面有详细描述。

    1.虚拟机建议是vmware,个人会尝试下irtualBox 5.1.6 for Windows hosts ,如果可行会写在这里。

    2.其他开发版本信息如下:

    Platforms      SDK PSP            Kernel U-Boot   Toolchain           Release Date
    AM335xEVM 6.0 04.06.00.11 3.2       2013.01 Linaro GCC 4.7 July 2013  

    3.ubuntu:应该是选择12.04.

    文档里多处提到10.04与12.04。但明确有如此说明,
    Please use only the 32-bit Ubuntu 12.04 release as this is what is called an LTS (Long Term Support).  There are SDK scripts that will be checking for this release identity
    还有一句:
    The Sitara SDK now includes the GCC toolchain from Open Embedded.  The ti-sdk was built and tested against a specific Linux Distribution name and version, Ubuntu 10.04 and 12.04. Note this does not prevent the user from installing the SDK on other Linux distributions.
    看来ubuntu还是选择12.04靠谱。


    其他参见文档。
  • 你好,是这样的,我这边在AM3354的平台上想利用最新的PDK3.0进行开发,官方这边有没有一些用作移植开发的参考资料?感觉不知道从哪里入手。

  • 您好:

    能分享一些am335x 基于nor flash 或 spi flash 移植linux系统的资料吗? Ti官网上系统讲解这方面的资料不多。

    附带我的一些问题:

     环境:采用am335x工业引擎ICEv2 EVM, (开发环境采用的是ti-processor-sdk-linux-rt-am335x-evm-03.01.00.06-Linux-x86)

     目前测试情况如下:

    1)norflash 启动引导测试:采用AM335x EVM am3335x_evm_norboot生成u-boot.bin,通过CCS烧写至nor flash的0扇区,选择nor flash启动模式,

        串口无数据输出,无法判断是否uboot是否已经启动? 网上有人说uart选择不正确,应该采用uart3,查看uboot 源码发现没有问题;

    2)spiflash 启动引导测试:采用am335x_evm_spiboot_config生成生成MLO.byteswap和u-boot.img,下载至spiflash中,选择spi flash启动模式,

        串口仍无数据输出

       这是什么原因,请帮忙分析一下,谢谢

  • 目前这部分,只有一些developing guide,如下,可以从编译的角度先入手了解我们的PDK3.0

    http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_Software_Developer%E2%80%99s_Guide

    porting部分的还没有一个教程出来,不过和之前的版本思路是一样的,如果你之前没有接触过的话,可以参考之前EZSDK的一些porting guide:

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Training

  • 首先NOR flash的设计,在你使用的ICE EVM板上就是相关的方案,我们还有一个帖子是专门针对NOR flash设计的,参考如下:

    http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/30869.aspx

    SPI 的设计,参考GPEVM板就可以了,这个板子上面支持SPI启动:http://www.ti.com/tool/tmdxevm3358

    针对于你提出的问题:

    1. ICEV2的EVM板上,确实是采用了UART3作为串口信息的打印,默认我们的Linux SDK中都是使用的串口0,所以你是否有自己改动过代码,让当前的u-boot.bin支持UART3的串口信息的输出?这是需要进行确认的点,当然,如果你有仿真器,就更加简单了,你可以直接使用仿真器接入你的板子,然后看板子停的地址是在哪块区域,通过这个可以判断你是不是进入了NOR flash启动,但这个方法,只能帮助你半段是否启动,但无法确认启动后的运行状态。

    2. 这个和上面那个问题本质上是一样的,如果你的初始的bootloader中,串口的配置是不正确的,仍然是默认的0,自然串口也是不会有任何输出的。我们默认会打印cccc的串口,以及默认的debug信息输出的端口都是uart0,所以,你要先验证这个部分,修改这些到uart3上是第一步。

  • 您好,

             感谢您的回复

             1)关于串口打印uboot引导数据流的问题已经解决,通过修改uboot中的配置文件(基于spiflash )测试通过。

              2)但是,在测试nor flash 时,参照您给得了帖子,帖子中GPMC的A0~A10作为高位地址线使用,而工业引擎am3359 ICEv2中采用的m29w160e 型号nor flash,它通过GPMC复用地址与数据线AD0~AD15,而地址线的高位四位分别采用GPIO2_12(GPMC_A8)、  GPIO2_13 (GPMC_A9)、 GPMC_A6、GPMC_A7作为高位地址线,通过分析u-boot源码,发现初始化代码与板子不匹配,请问该如何修改uboot源码中GPMC与nor flash 相关初始化,是否有参考教程?

  • 您好,我这边的情况是核心单板上电后,IO电源3.3V反灌到VDDS_RTC的1.8V电源域,导致TPS65217D的LDO1抬高至2.5V,http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/p/124018/345009.aspx#345009,请问出现这种问题有什么解决方法吗。

  • 您好:

            根据您的链接参考我自己用busybox做了一个小的文件系统,放到SD卡的rootfs分区中,系统也能启动起来,但是我在终端中执行mkdir时候显示文件为只读

    [root@zyr-am335x home]#cd /home
    cd /home
    [root@zyr-am335x home]#ls
    ls
    root test
    [root@zyr-am335x home]#./test
    ./test
    9
    [root@zyr-am335x home]#mkdir asd
    mkdir asd
    mkdir: can't create directory 'asd': Read-only file system
    [root@zyr-am335x home]#su mkdir asd
    su mkdir asd
    -ash: su: not found
    [root@zyr-am335x home]#sudo mkdir
    sudo mkdir
    -ash: sudo: not found

    这是什么原因呢?或者我想修改跟文建系统的属性应该在哪里添加什么命令?

    但是我用您提供的小文件系统没有遇到上属问题。

  • ls  /home -lh  看一下家目录的属性。 是否没有 w 权限?

  • 我算是其他用户吧,我好想没有W权限:

    drwxr-xr-x 18 root root 4096 Jun 15 2017 .
    drwxr-xr-x 18 root root 4096 Jun 15 2017 ..
    drwxrwxr-x 16 1000 1000 4096 Jun 13 2017 123
    drwxrwxr-x 2 1000 1000 4096 Jun 13 2017 bin
    drwxrwxr-x 2 1000 1000 4096 Jun 13 2017 boot
    drwxrwxrwt 5 root root 2620 Feb 18 18:06 dev
    drwxrwxr-x 5 1000 1000 4096 Jun 22 2017 etc
    -rw-rw-r-- 1 1000 1000 645 Jun 13 2017 fisl.sh
    drwxrwxr-x 3 1000 1000 4096 Jun 22 2017 home
    drwxrwxr-x 5 1000 1000 4096 Jun 22 2017 lib
    lrwxrwxrwx 1 1000 1000 11 Jun 13 2017 linuxrc -> bin/busybox
    drwx------ 2 root root 4096 Jun 14 2017 lost+found
    drwxrwxr-x 7 1000 1000 4096 Jun 13 2017 mnt
    dr-xr-xr-x 46 root root 0 Jan 1 1970 proc
    drwxrwxr-x 2 1000 1000 4096 Jun 13 2017 root
    drwxrwxr-x 2 1000 1000 4096 Jun 13 2017 sbin
    -rw-r--r-- 1 root root 11341654 Jun 14 2017 self.tar.gz
    -rw-rw-r-- 1 1000 1000 11343951 Jun 14 2017 self1.tar.gz
    -rw-r--r-- 1 root root 22485937 Jun 15 2017 self2.tar.gz
    dr-xr-xr-x 12 root root 0 Feb 18 18:06 sys
    drwxrwxrwt 2 1000 1000 4096 Jun 13 2017 tmp
    drwxrwxr-x 6 1000 1000 4096 Jun 13 2017 usr
    drwxrwxr-x 7 1000 1000 4096 Jun 14 2017 var

  • 用这边得SDK怎么制作SD卡启动得。手册在哪?

  • @Steven Liu

    Steven Liu,您好,向您请教一个问题,麻烦您帮我看一下。
    http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/140081.aspx 

    Ps:SDK07有没有像您之前写的跟SDK06一样的烧写全记录之类的手册呢?

    谢谢!

  • 您好,能否提供一些关于pru上constant table控制pwm的例子

  • Hi,Steven

         关于DDR其他参数的配置能否也做一下说明:MT41K128MJT125_EMIF_READ_LATENCY、MT41K128MJT125_EMIF_SDREF、MT41K128MJT125_ZQ_CFG、

    MT41K128MJT125_RATIO、MT41K128MJT125_IOCTRL_VALUE

    谢谢!

  • Hi steven,

    我用 AM335X LINUX SDK 8.0 为啥找不到 AM335X.C 文件。板级配置文件。我记得原来是在 arc/arm/mach-omap2 下的 有board-am335x.C 的?

  • 楼主,你好,TI的文档确实很多,多得简直不能在多了,但是真的很多都是多余的。没有任何实际指导意义,你们是专家,一直在说,一直在讲,完全不考虑听众的感受,自顾自话。就说你这个AM335x 软件编译指南,请问我编译完了得到了什么输出,得到了什么镜像,我该怎么烧录,制作启动sdcard,找不到tar.xz压缩包,我该怎么生成,什么步骤都没有,难道编译玩了我就可以丢掉了是吧,你可以,我不行啊,我要做成产品,我的固件要发到工厂烧录啊,很多文档大篇幅的在说这个版本那个版本的区别,有意思吗!!!!!!

    所以,我的建议,你们能不能出两个教程,入门教程,进阶教程。入门教程,只需要拿一个最新版本的SDK,从SDK安装,到编译,到打包烧录制作启动卡等步骤,全部走一遍。让入门的新手不要到处找,资料多如牛毛,但真的不知道在哪里可以搜索得到!!!!!

    如能回复,感激不尽。

    我还得继续摸索,编译了一个04版本的SDK,竟然做不了sd启动卡,编译也不知道得到了什么鬼东西。

    http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_create_SD_card_script,这里面也告诉我执行那个脚本就可以制作,但压缩档怎么得到的一句话没有。

  • 感谢你的回复和建议!

    针对于制作SD卡的话,在我们的SDK安装完成之后,进入到安装的目录下面,有个bin文件夹,进去了后里面有个create-sd的脚本文件,使用读卡器连接到SD卡上,插入电脑后使用管理员权限运行该create sd的脚本程序,就会进入选择SD卡的界面,敲入命令后,选择两个分区就可以开始SD卡的格式化。按照提示操作,就可以正常的安装相关的文件了。

    另外,针对您提出的建议,我觉得很好,只是平日里,没有人提出需要,后续的过程会出相关的入门文档来做指导,感谢反馈!

  • 你好,我想咨询一下:AM SDK6.0经典版本(linux3.2)里面,很多人反馈过的ubifs的问题,是否有解决办法(在linux3.2基础上的PATCH还是使用新的P SDK?)?还想知道这个根本问题到底在哪?虽然目前使用根文件系统(RO)+应用分区(RW)+频繁读写分区(读写分区支持自检擦除恢复)来间接解决宕机的问题,论坛很多帖子都提到过,选个有参考的链接如下:e2echina.ti.com/.../365416
  • 你好,我想咨询一下:AM SDK6.0经典版本(linux3.2)里面,很多人反馈过的ubifs的问题,是否有解决办法(在linux3.2基础上的PATCH还是使用新的P SDK?)?还想知道这个根本问题到底在哪?虽然目前使用根文件系统(RO)+应用分区(RW)+频繁读写分区(读写分区支持自检擦除恢复)来间接解决宕机的问题,论坛很多帖子都提到过,选个有参考的链接如下:e2echina.ti.com/.../365416
    烦请回复一下,谢谢!
  • 你好,请问有关于AM335x在软件CCS中进入standby和deepsleep0模式的例程吗?网上关于这方面的资料太少了,第一次接触AM335x,用CCS去实现前面的功能有点无从下手
    望回复,谢谢
  • 最新的sdk PROCESSOR-SDK-LINUX-AM335X 05_01_00_11, 里面的uboot源码编译后,MLO和uboot放在sd卡中,从sd卡启动总是会重启,MLO可以使用串口,U-boot串口无法使用,没有信息输出。这个问题是不是sdk的一个bug啊?我改了一下uboot的sp,让其指向DRAM,并修改gd->malloc_limit=0x100000之后才正常启动。默认u-boot刚启动时的stack只有1kB,是不是太少了?我改大了就可以了。有没有人遇到过同样的问题?
  • SDK中busybox版本过低,怎样升级?谢谢