首页 > 学院 > 开发设计 > 正文

ARM:嵌入式系统介绍、开发板环境设置、tftp实现文件下载、SecureCRT工具烧写

2019-11-14 11:33:51
字体:
来源:转载
供稿:网友
'《ARM》'【进程和线程的区别?】    "线程,是执行的基本单位,线程共享进程的资源"。    "进程,是资源分配的基本单位,调度的单位"。    一个进程里可以有多个线程。    每个进程都至少有一个线程,这个线程是进程的主线程。【进程间的通讯方式?各有什么特点?】【线程间的同步方式?】【共享资源的互斥策略?】【谈谈对嵌入式软件开发的认识】【给你一块开发板,如何把它用起来】【给你一个芯片,如何写好驱动程序】【OSI七层模型,每层模型举1个协议出来】C语言练习:重视'数据结构'。【提高C语言的方式】:    1. 数据结构课程的练习题目        堆        栈        队列        -> 链式存储的方式实现(练的就是指针)    2. arm/env/MS.rar        每天做1-2套面试题。        'eg1:        int main (void) {            char* p; // 或 char* p = NULL;            strcpy (p, "hello");            PRintf ("%s/n", p);  // a.out  ---> 段错误!            return 0;        }        'eg2:        void func (char* str) {  // 需要使用二级指针才行            str = malloc (100);        }        int main (void) {            char* p = NULL;            func (p);             strcpy (p, "hello"); // *p上一样是0,没有内存空间            printf ("%s/n", p); // 段错误!            return 0;        }-------------------------------------------------1、ARM体系结构与编程 - ARM裸板开发(不带操作系统)    main () {        xxx;        yyy;        while (1) {            ...        }    }    异常处理...    |    v    >:搭建嵌入式开发环境    >:LED    >:UART 串口    >:g-sensor 重力传感器    >:ARM 汇编    >:异常处理2、系统移植    bootloader 的移植        u-boot    kernel的移植                linux    根文件系统的制作3、linux驱动程序开发    内核知识    驱动框架的知识    硬件知识4、项目    智能家居    智能车-------------------------------------------------1、嵌入式系统    以'应用'为中心,软硬件的'裁剪'    对功能性、可靠性、成本、体积、功耗有严格要求的专用计算机系统。    大数据、云计算、物联网(智能家居/车联网)、智能穿戴、AR/VR2、嵌入式系统的构成【硬件系统】    --->最小系统 (设计开发板的时候必须存在的硬件)包含            :'处理器'        arm/51单片机/mips/powerpc/intel            :'电源电路'    硬件设计不好易死机            :'复位电路'            :'时钟电路'    <==> 相当于心跳,提供周期性的信号            :'存储电路'    掉电丢失:RAM (<==>PC机的内存)                                                sram静态/dram动态/ddram                                掉电不丢失: ROM(<==>PC机的硬盘)                                                Flash/nandflash                                                emmc: nandflash + 控制电【软件系统】    :'驱动程序'        控制硬件工作的程序    :'OS'                Operate system (实时操作系统  vs  非实时操作系统)                            linux : '非实时操作系统',取决于操作系统的调度策略                                        linux中主要的调度策略是 '时间片轮转'。                            Rtlinux:'实时操作系统',基于优先级调度策略。                            实时操作系统:ucos-II / Vxworks                             '操作系统中常见调度策略':                                1. 时间片轮转;                                2. 先来先服务;                                3. 基于优先级;                            WinCE / qnx    :'应用程序'        范围很广很多了...                            所需技能:C语言、QT、Unix-C、数据库(sqlite)3、开发模式在PC机上软件开发:vi hello.c  --->  gcc hello.c  --->  ./a.out在嵌入式环境下开发:    1. 开发主机,PC (完成代码的编辑、编译工作);    2. 目标板,开发板 (运行编译后的可执行程序);    3. 开发主机和目标板的通信方式:USB线 / 串口线 / 网线 / JTAG调试口4、硬件简介4.1 核心板        (www.arm.com - 了解arm核版本,A53...)    【CPU】s5p6818 - 三星生产,基于cortex-A53 - 8核1.4GHz    【DDRAM】海力士 - 1GB    【EMMC】三星 - 8GB    【网卡】REALTEK - 台湾 - PHY(物理层)    【电源管理芯片】略 - 不用管4.2 底板    连线:        电源线        串口线        网线5、uboot烧写到emmc    env/ubootpak.bin    A. 烧写过程可以通过usb线来完成 fastboot    B. 也可以通过TF卡的方式来完成烧写    ' TF卡烧写步骤:        1. 将TF卡插入读卡器,将读卡器插入电脑;        2. 格式化TF卡(FAT32 - 文件系统),可选可不选快速格式化;        3. env/IROM_Fusing_ToolV2.0.zip - 解压出可执行程序:            IROM_Fusing_Tool.exe - 运行此程序;        4. 选择对应的分区;        5. 点击Browse找到选择要写入的文件ubootpak.bin,点击add;        6. 点击START,完成写入;        7. 将TF卡插入开发板的SD0插槽,开发板启动时默认从TF卡读取并执行        8. 启动PC上的串口软件            env/SecureCRT.rar - 解压 (放在'非中文路径')            SecureCRT.exe - 放到桌面快捷方式,启动            Alt + Q  快速链接 (或 点击第二个图标)            > 协议:Serial            > 端口:COM1  // 笔记本COMx                (计算机 - 属性 - 硬件 - 设备管理器 - 端口 / 笔记本单独看一下)            > 波特率:115200            > 数据位:8            > 奇偶校验:None            > 停止位:1            > 流控:RTS/CTS (去掉勾选,空着)            ---> 【连接】        9. 复位开发板            在倒数读秒 (3 s) 计时过程中按下空格键,进入 X6818# 命令行模式5.1 保证开发板可以ping通服务器    > 纯Ubuntu系统只要保证开发板和ubuntu系统处于同一网段即可。    > 虚拟机中需要注意三点:        1) 开发板、ubuntu系统、windows三者处于同一网段            ubuntu系统: 192.168.1.8    255.255.255.0            开发板:         192.168.1.6    255.255.255.0                    SerialCRT软件下Serial-COM1(1)的命令行下                    X6818#:'printenv    // ipaddr / netmask / serverip                    X6818#:'setenv ipaddr 192.168.1.6                    X6818#:'setenv serveraddr 192.168.1.8                    X6818#:'saveenv                    // 写入环境变量到掉电不丢失的EMMC中            windows:     192.168.1.121                    注意修改的是连接开发板的网卡的ip - 方法:拔插开发板网线        2) 设置VMware的桥接模式            VMware - 【虚拟机】 - 设置 - 网络适配器 - 桥接模式(B)        3) 选择用于桥接的网卡            VMware - 【编辑】 - 虚拟网络编辑器 - 桥接模式 - 桥接到(开发板对应的网卡,在本地连接中可以看名字,鼠标放在图标上即可)        >> 在串口中执行命令                    X6818#:'ping 192.168.1.8                    看到" host 192.168.1.8 is alive "此行内容即为ping通,成功。                    注意:                        a. 不能主机ping开发板;                        b. 第一执行ping时不成功,忽略;(一直ping不通检查网线)5.2 使用tftp协议的方式完成windows下的ubootpak.bin的下载    tftp:tftp是ftp协议的简化版本,其中没有用户管理的功能。【tftp服务器】    1) 在ubuntu系统中 --->        联网方式:$:'sudo apt-get install tftpd-hpa [-d]        // VM联外网的方式:设置 - 网络适配器 - NAT,ubuntu ip自动获得        非联网方式:        $:'cd /home/tarena/Downloads/tftp        $:'sudo dpkg -i *.deb    2) 配置tftp server:        $:'sudo vi /etc/default/tftpd-hpa        ---> TFTP_DIRECTORY="/tftpboot"    // tftp客户端登陆后文件目录    3) 要想让新的配置生效需要重启tftp server,重启方式:        $:'sudo /etc/init.d/tftpd-hpa restart    4) 将要供客户端下载的文件拷贝到/tftpboot/目录下        $:'sudo cp /mnt/hgfs/arm/env/ubootpak.bin /tftpboot/        //     $:' sudo chmod +w /tftpboot/ -R      此行命令可用sudo cp ...解决【tftp客户端】 // 确保 serverip=192.168.1.8X6818#:'tftp 0x48000000 ubootpak.bin    该命令下载ubootpak.bin到dram(内存)的0x48000000为开始的地址上了。    // 0x48000000 是物理地址,它是开发板上的物理地址,该物理地址对应的是哪个ddram,详见 cpu datasheet。X6818#:'update_mmc 2 2ndboot 0x48000000 0x200 0x53bb0    // 2: 2th mmc 存储设备(SD0 - 0,SD1 - 1,EMMC - 2)    // 2ndboot:要更新的分区    // 0x48000000:源数据地址    // 0x200:源数据写入2ndboot分区的便宜(实际有512kb)    // 0x53bb0:写入的字节数(ubootpak.bin文件下载下来的大小)验证:    将TF卡从开发板上拔下来,复位开发板。    // ubootpak.bin 文件会被自动从EMMC加载到dram(内存)中6、led.bin文件的下载和运行    env/led.bin    $:'sudo cp /mnt/hgfs/env/led.bin /tftpboot/    开发板上执行:    $:'tftp 0x48000000 led.bin    $:'go 0x48000000    // 开发板上蓝色的led灯会亮要写好led.bin需要提前预习阅读:** 阅读CPU的数据手册,在env/DataSheet.rar里面的说明文件(三星原厂)    SEC_S5P6818X_Users_Manual_preliminary_Ver_0.00.pdf    主要看第16章。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表