请选择 进入手机版 | 继续访问电脑版
    查看: 9365|回复: 195

    Cortex-A8、S5PV210、TQ210裸机开发视频教程

      [复制链接]

    883

    主题

    941

    帖子

    3575

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3575
    基情
    1843
    发表于 2015-7-19 00:24:36 | 显示全部楼层 |阅读模式
    此教程为下家山团队录制的视频教程 交流QQ群220361413解答你们一切问题教程目录:
    第一节:现象
           1beep(蜂鸣器)
           2led(灯)闪烁  
    第二节:开发板的认识

    Cortex-A8、S5PV210、TQ210裸机开发视频教程

    Cortex-A8、S5PV210、TQ210裸机开发视频教程
           开发板的作用
           为什么要分核心板和底板设计
    第二节:找到开发板上某个设备的两种方法
           1,丝印
           2PCB
    第三节:如何定位外设连到CPU哪个引脚
           1,外设
           2,引脚
           3,一个引脚对应多种功能
    第四节:GPIO口控制原理
           1,端口的概念
           2,寄存器
            3,位
           4,地址
           5,输入/输出
           6,其他功能
    第五节:代码如何入手
           1C的框架
           2:汇编的框架
           3:汇编怎么过渡到C
    第六节:怎么通过代码控制灯
        1,控制寄存器
        2,数据寄存器
        3,单步控制
    第七节:全速运行,控制两个灯
           1,宏定义
           2,单个灯,全速运行
           3,延时
           4,加入第二个灯控制
           5,按位与或,逻辑与或        
    第八节:编译原理
           1:编译器arm-linux-gcc
           2:链接器arm-linux-ld
           3: 反汇编器arm-linux-objdump
           4:-g的作用
           5-c的作用
           6-Ttext的作用
    第10节:工程设置
           1:工程文件
           2elf文件
           3arm-linux-gdb文件
           4:命令文件
           5Makefile文件
           6:代码


            
    第11节:如何建立新工程(导入一个已经存在的工程)
           1:建立配置文件
           2beep汇编和C代码的编写
           3beep的控制原理(思路)
           4:调试
    12节:如何徒手建工程(没有工程模板,全新建立)
           1:建工作空间(workspace)
           2:建工程(eclipse->file->new->cproject
           3:如何去掉系统自带的includesmanage set import project
           4:代码文件的建立(main.cstart.sMakefile)
           5gdb调试命令,添加模板文件s5pv210.init
           6:通过Makefile生成.o目标文件,.elf可执行链接文件,.dis反汇编文件
           7:所有代码是链接到了0x20000地址,那么我们的程序(efl)文件,是下载到了0x20000地址。
    13 节:我们编译出来的可执行文件如何下载到0x20000地址
           10x20000来自哪里?

    34ed75c2c327d69bs.png
            2:elf文件怎么下载到板子上去的?
           通过jlink-jtag下载到开发板的内存地址0x20000
            3:开发板串口输出,在按开发板复位键之前要按住键盘的空格键,然后长按开发板复位键,等待串口输出信息,停止开发板复位键和空格键



    6f8e736508e44375s.png


            4:我们要在ubuntu系统下面,运行JLINK的驱动和GDB服务器,

    bfe1c4508059a610s.png

         当eclipse调试开发板的时候

    f4d24cc42f36b012s.png

    第十四节:1秒定时是怎么实现的
            通过定时器来实现;
            S5pv210的定时器管理:
                  1PWM TIMER
           2:  SYSTEM  Timer
           3:  RTC
           4:  Watchdog timer
            PWM
            1overview
               S5pv210532位的定时器,其中,03是有引脚输出,4是给内部用的。其中0PWM定时器有死区控制。
            2:开图

    f788f69433adf5c4s.png

          3:挑最简单入手,timer4
         4:马上切入到寄存器
    第十五节:为什么要分频


    bc30d42e9ba706c8s.png


    我们定时器4
         PCLK要通过两级分频
                TCFG0[15~8]==1~255   第一级分频
                TCFG0[19~16]==1/2,1/4,1/8,1/16  第二级分频
       如果第一级分频设置为255

    第二级分频设置为1/16
    那么我们的定时器4的输入时钟频率是多少?
    第16节:寄存器配置



    Timer4 输入频率 = 66Mhz/255+1/16 = 16896
    TCFG0, R/W, Address = 0xE250_0000 = 255<<8;
    TCFG1, R/W, Address = 0xE250_0004 = 4<<16;
            定时器内部原理

    c0456273dea4c13cs.png
    TCNTB4, R/W, Address = 0xE250_003C = 66Mhz/255+1/16 = 16896
    CON, R/W, Address = 0xE250_0008 =(1<<20) | (1<<22) | (1<<21);
    CON, R/W, Address = 0xE250_0008 =(1<<20) | (1<<22) | (0<<21);
    第17节:怎么写代码实现定时器功能
    1:配置分频值
    2:设置档位
    3:设置控制寄存器
    4:设置相关定时器通道的计数值
    5:通过观察寄存器判断是否计数到0
    18节:什么是算术逻辑单元(ALU
    +-*/====算术运算
    <<>>&|~!^====逻辑运算

    左移<< *2
    0000 0001  1<<0  1
    0000 0010  1<<1  2
    0000 0100  1<<2  4
    0000 1000  1<<3  8
    右移>> 除以2
    16>>0   0001 0000
    16>>1   0000 1000  8
    16>>2   0000 0100  4
    与&
    a= 3;
    b=12;
    if(a&b)
    Printf(“*************\n”);
    Else
    Printf(“#############\n”);
    &是按位与
    0011
         &        1100

                    0 0  0 0
            真和假,0为假,非0为真
            If(-2){}为真
          &&是逻辑与,是并且的意思
           a= 3;
    b=12;
    if(a&&b)
    Printf(“*************\n”);
    Else
    Printf(“#############\n”);
    | 按位或
           a= 3;
    b=12;
    if(a|b)
    Printf(“*************\n”);
    Else
    Printf(“#############\n”);
    0011
              |   1100

                   1111
    || 逻辑或,a或者b只要有一个为真,结果为真
           a= 3;
    b=12;
    if(a||b)
    Printf(“*************\n”);
    Else
    Printf(“#############\n”);
          ^异或,不同为真,相同反而为假
           if(TCNTO4== 0)
            {
                GPC0DAT ^=3<<3;// 11000
            }
         
    GPC0DAT   XXX1 0110
                 ^  0001  1000

                 0  1110
    第19节,PCLK=66Mhz可以随便写吗
            不能随便写,是要通过系统时钟倍频,然后分频得到的
            13个时钟域(MSYS,DSYS,PSYS
            2:时钟源(XRTCXTI,XXTI,XUSBXTI,XHDMIXTI
            3:  PLL
            4APLL(cpu)L,MPLL(cpu),EPLL(audio),VPLL(video)

            5ARMCLK,HCLK,PCLK===AHB,APB

    0506a926bc59bec2s.png
    7:如果我们不设置时钟,采用默认值,系统时钟(ARMCLK=24Mhz
              8:如果我们要倍频到1G,怎么做呢?
    20节:如何倍频到1G
            第一步:(CLK_SRC0[0]=1--->Foutapll
            第二步:APLL_CON031=1--->enable apll
            第三步:根据FOUT =MDIV X FIN / (PDIV × 2 SDIV-1 )
                    设置MDIV,PDIV,SDIV
                      1000 = m*24/(p*2(s-1))
                          = 125*24/(3*1)
                      APLL_CON0[25:16]=M
                      APLL_CON0[13:8]=P
                      APLL_CON0[2:0]=S
                     
             第四步:CLK_SRC0[16]=0   默认值,无需设置
             第五步:CLK_DIV0[2:0]=0    默认值,无需设置
    21节,怎么通过代码实现倍频到1G
            实验方法:怎么知道我们设置到了1000M
             1:通过示波器测量
             2:通过代码,我们先设置到1G,然后设置到24M,看蜂鸣器效果
                  24= 128*24/(8*2(5-1))
                    = 128 *24/(8*16)
                    =128*24/128
                    =24
                PDIV: 1 PDIV 63
    MDIV: 64 ≤ MDIV ≤ 1023
    SDIV: 1 ≤ SDIV ≤ 5
    Fref (=FIN / PDIV): 1MHz ≤ Fref ≤ 12MHz
              3:软件验证方法
                  高频率(1G)使用大延时
                  低频率(24M)使用短延时
    第22节:如何配置PCLK到66Mhz
            第一步:CLK_SRC0[4]=1--->MPLL_SEL=FOUTmpll
             第二步:CLK_SRC0[24]=0==MUX_PSYS_SEL==SCLKMPLL
                      默认值,无需设置
             第三步:配置MPLL
                      FOUT = MDIV X FIN / (PDIV X 2SDIV)
                      MPLL_CON[31]=1
                      MPLL_CON[25:16]=0x14d
                      MPLL_CON[13:8]=0x3
                      MPLL_CON[2:0]=1
                      Fout = 333 * 24/(3*2)
                          = 333 *4
                          =1332
              第四步:设置分频在DIVhclkp
                       CLK_DIV0[27:24]=DIVHCLKP==4
              第五步:设置分频在DIVpclkp
                       CLK_DIV0[30:28]=DIVPCLKP==3
                       1332/(DIVHCLKP+1)/(DIVPCLKP+1)=66
                        (DIVHCLKP+1)*(DIVPCLKP+1) =20
                        (4+1)*(3+1)=20
    第23节:如何通过代码实现PCLK设置到66M
            
            第一个要注意的问题:
            CLK_DIV0 =  (CLK_DIV0 &(~(0x3f<<24))) | (4<<24) | (3<<28);
              第二个要注意的问题:
              先配置APLL,配置完,需要延时;
              再配置MPLL,配置完,需要延时;
    24节:蜂鸣器为什么不是一秒响一下?

    3e22049a373e1b60s.png

    if(TCNTO4== 0)
            {
                GPD0DAT ^=1<<1;
            }
    问题在于,CPU执行代码的速度远远大于定时器的频率。也就是说,当定时器的监视器等于0的这个状态,会停留1/16896秒,在这个时间段,CPU执行了N此蜂鸣器状态切换的动作GPD0DAT ^= 1<<1;
    怎么解决这个问题:
    采用标志位:
    TIMER_FLAG = 1;
    if(TCNTO4== 0)
    {
              If(TIMER_FLAG==1){
                GPD0DAT ^=1<<1;
                 TIMER_FLAG =0;
               }
    }else{
      TIMER_FLAG =1;
    }
    25节:脉宽调制PWM
                1:从现象入手(没有代码控制蜂鸣器,也可以使他有规律的响)
                2:透过现象看本质,知道PWM的控制原理


    da1417a7b90bc7a8s.png
                 3:怎么设计实验方法
                     要看定时器的PWM引脚输出,接了哪些外设,根据原理图去搜索pwm,会搜到蜂鸣器是连在定时器1pwm引脚输出上,这样就可以采用定时器1来做PWM实验。
    26节,代码如何实现PWM输出控制
    为什么蜂鸣器不响?
       步骤:
    0:配置引脚功能到TOUTx功能
    1:配置分频值
    2:设置档位
    3:设置控制寄存器
    4:设置定时器计数器缓冲寄存器
    5:设置定时器比较缓冲寄存器
    27节:易忘的细节

    182c2f4114e83a20s.png
             PWM翻转功能设置


    bba58a19a82c1b5es.png


             启动定时器前,设置电平是由高到低,还是低到高!
    第28节:对26和27节的一个补充
            1PWM编程的步骤
            2PWM控制寄存器中翻转位的意思
    第29节:如何以目标为驱动去学习
            按键
            
            目标:手动控制蜂鸣器或者LED,当按下某个按键蜂鸣器响,再按下不响
            思路:
                  0步:怎么知道按键按下去
                  第一步:找到按键的实物
                  第二步:根据实物下面的丝印(KEY1),在原理图中找到按键对应到CPU哪个引脚
                  第三步:根据丝印在主板上找到网络表,然后通过网络表(XEINT0),在核心板原理图找到对应具体的CPU引脚(GPH0_0
                  第四步:根据CPU数据手册,研究如何控制这个引脚(按键)
                  第五步:如何配置按键引脚
                          是配置输入,还是输出?
           问题的关键:
                怎么判断按键按下去了——>分析按键按与不按的区别(现象)
                按下:低电平
                松手:高电平
                怎么判断GPH0_0引脚电平


    6217aa66588aee4as.png

    第30节:按键的代码实现
            1:按键引脚无需功能设置(采用默认配置,输入)
            2:如何过滤GPH0_DAT的第0
                GPH0_DAT& 0x01
            3;调试方法,断点调试,细分问题
            4:全速运行没了反应
    课程下载地址

    游客,如果您要查看本帖隐藏内容请回复

    回复

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:35 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:38 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:39 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:41 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:41 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:41 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    24

    帖子

    37

    积分

    VIP会员

    Rank: 7Rank: 7Rank: 7

    积分
    37
    基情
    13
    发表于 2015-7-19 07:30:41 | 显示全部楼层
    希望、、、是美好的
    回复 支持 反对

    使用道具 举报

    0

    主题

    4

    帖子

    4

    积分

    新手上路

    Rank: 1

    积分
    4
    基情
    0
    发表于 2015-7-19 07:36:33 | 显示全部楼层
    根据丝印在主板上找到网络表,然后通过网络表(XEINT0),在核心板原理图找到对应具体的CPU引脚(GPH0_0)
    回复 支持 反对

    使用道具 举报

    0

    主题

    34

    帖子

    62

    积分

    注册会员

    Rank: 2

    积分
    62
    基情
    28
    发表于 2015-7-19 20:12:06 | 显示全部楼层
    需要这些资料
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|网站地图|DZ商业模板|VR福利资源|嵌入式Linux论坛 ( 粤ICP备15085165号-2 )

    GMT+8, 2017-10-21 07:53 , Processed in 0.108083 second(s), 26 queries .

    Powered by 深嵌论坛 X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表