ARMlinux嵌入式开发环境安装参考手册
- 格式:doc
- 大小:531.00 KB
- 文档页数:12
gec-6818 嵌入式linux开发指导手册嵌入式Linux开发指导手册是针对GEC-6818嵌入式开发板的用户提供的一份使用手册,旨在帮助开发者了解如何在GEC-6818上进行嵌入式Linux开发,并提供一些开发过程中可能遇到的问题和解决方案。
本文将从以下几个方面进行介绍和指导。
一、GEC-6818简介GEC-6818是一款基于ARM架构的嵌入式开发板,搭载了Cortex-A53四核处理器,主频高达 1.3GHz,拥有丰富的外设接口和扩展能力,适合用于嵌入式Linux系统的开发和应用。
本章将介绍GEC-6818的主要硬件组成和接口定义,以便开发者能够快速上手使用。
二、嵌入式Linux系统搭建本章将介绍如何搭建嵌入式Linux系统,并详细介绍了系统的编译和安装过程。
主要内容包括交叉编译工具链的安装、内核的编译和配置、文件系统的构建和配置等。
同时,还会提供一些常见的问题和解决方案,帮助开发者尽快搭建起自己的开发环境。
三、设备驱动开发设备驱动是嵌入式Linux开发中一个重要的环节,本章将介绍设备驱动的基本概念和开发过程。
主要内容包括字符设备驱动、块设备驱动、网络设备驱动等。
同时,还会提供一些实例代码和开发技巧,帮助开发者更好地理解和掌握设备驱动的开发。
四、应用程序开发应用程序开发是嵌入式Linux开发中的另一个重要环节,本章将介绍如何在GEC-6818上进行应用程序的开发。
主要内容包括交叉编译环境的搭建、编写Makefile文件、调试应用程序等。
同时,还会提供一些常见的应用程序开发技巧和调试方法,帮助开发者快速进行应用程序开发。
五、远程调试和调优远程调试和调优是嵌入式Linux开发中的重要环节之一,本章将介绍如何在GEC-6818上进行远程调试和调优。
主要内容包括通过串口进行调试、使用GDB进行调试、使用sysbench进行性能测试等。
同时,还会提供一些常见的调试和调优技巧,帮助开发者尽快定位和解决问题。
实验一嵌入式 Linux 开发环境的搭建及 Makefile 应用一、实验目的:1.熟悉嵌入式 Linux 开发基本过程及基本命令。
2.了解嵌入式 Linux 开发中各种工具的基本用途。
3.搭建好嵌入式 Linux 的开发环境。
4.通过对包含多文件的 Makefile 的编写,熟悉各种形式的Makefile 编写,加深对 Makefile 中用户自定义变量、自动变量及预定义变量的理解。
二、实验内容:1.安装 Vmware 及 Ubuntu;2.熟悉 Linux 下相关命令:属性查询、修改,路径、目录的查询、修改、删除,压缩、解压等;3.熟悉编辑工具;4.熟悉 makefile 文件的基本作用(编写一个包含多文件的Makefile)。
三、Make 工程管理器:Makefile如今能得以广泛应用,这还得归功于它被包含在Unix系统中。
在make诞生之前,Unix系统的编译系统主要由“make”、“install”shell脚本程序和程序的源代码组成。
它可以把不同目标的命令组成一个文件,而且可以抽象化依赖关系的检查和存档。
这是向现代编译环境发展的重要一步。
1977年,斯图亚特·费尔德曼在1贝尔实验室里制作了这个软件。
2003年,斯图亚特·费尔德曼因发明了这样一个重要的工具而接受了美国计算机协会(ACM)颁发的软件系统奖。
Makefile文件是可以实现自动化编译,只需要一个“make”命令,整个工程就能完全自动编译,极大的提高了软件开发的效率。
目前虽有众多依赖关系检查工具,但是make是应用最广泛的一个。
一个程序员会不会写makefile,从一个侧面说明了这个程序员是否具备完成大型工程的能力。
1.Makefile 基本规则一个简单的 Makefile 语句由目标、依赖条件、指令组成。
smdk6400_config :unconfig@mkdir -p $(obj)include $(obj)board/samsung/smdk6400其中:smdk6400_config:目标;unconfig:先决条件;@mkdir -p $(obj)include $(obj)board/samsung/smdk6400:指令。
嵌入式系统原理与应用实验栗华编着山东大学信息科学与工程学院二零一四年三月目录第一章实验硬件平台1.1北京博创UP-TECH三合一实验箱简介本实验指导书所依赖的硬件平台为北京博创兴盛科技有限公司生产的一种ARM9/Xscale经典三核心教学科研平台(型号:UP-TECHS2410/S2440/P270),本平台兼容PXA270核心CPU及S3C2410、S2440核心CPU的全部功能,是北京博创多年来嵌入式教学产品开发经验的结晶。
这里选配的是S3C2440核心板。
图1-1UP-CUP三合一实验箱外观应用案例:※支持Linux、WinCE、Vxworks、μC/OS-Ⅱ4套操作系统;※核心板可更换,同时拥有ARM9(S3C2410和S3C2440)和XScale(PXA270);※中国电子学会嵌入式工程师认证考试和师资培训指定平台;硬件资源:软件资源结构说明图1-2UP-TECH三合一实验箱实物结构图1-2UP-TECH三合一实验箱框图结构图1-3UP-TECH三合一实验箱框图结构版图1.2跳线设置参考说明:◆PCB上所有“EXPORT”丝印字符表示168Pin扩展槽◆JP1401RESET-SEL:设置复位电路,位置JTAG20插座下方。
1-2:ICE的ICE-TRST复位信号可以控制系统复位信号RESET。
2-3:ICE的ICE-TRST复位信号不可以控制系统复位信号RESET。
◆JP1402JTAGSEL:选择JTAG电路,位置JTAG20插座下方。
1-2:使能板载的UP-LINKJTAG电路。
2-3:使用外部的JTAG电缆或者ARMICE仿真器。
◆JP1103TXD1-SEL◆JP1104RXD1-SEL:UART1选择扩展槽或者RS232的DB9插座。
1-2:UART1连接RS232-1,从DB9串口插座输出。
2-3:UART1连接到扩展槽。
◆JP1101TXD2-SEL◆JP1102RXD2-SEL:UART2选择跳线,分别为RS485、IrDA、扩展槽1-2:UART2连接到RS485总线上。
嵌入式linux系统开发标准教程嵌入式Linux系统开发是一门非常重要的技术,它在嵌入式设备、物联网和智能家居等领域中得到广泛应用。
本文将介绍嵌入式Linux系统开发的标准教程,帮助读者了解该技术的基本原理和常用的开发工具。
一、嵌入式Linux系统开发的基本原理嵌入式Linux系统开发是指将Linux操作系统移植到嵌入式设备中,并针对特定的应用领域进行定制开发。
它与传统的桌面Linux系统有很大的区别,主要体现在以下几个方面:1. 硬件平台的选择:嵌入式设备通常采用ARM架构或者其他低功耗的处理器架构,而不是传统的x86架构。
因此,在进行嵌入式Linux系统开发时,需要根据具体的处理器架构进行相应的移植和优化。
2. 精简的内核:由于嵌入式设备的资源有限,为了提高系统性能和节省资源,嵌入式Linux系统通常会精简内核。
这需要对Linux内核的源代码进行裁剪和优化,以去除不必要的模块和功能,并保留对应用需求的必要功能。
3. 定制化的驱动程序和应用程序:嵌入式设备通常需要与各种外设进行交互,因此需要编写相应的驱动程序。
此外,根据具体的应用需求,还需要定制相关的应用程序和用户界面。
二、嵌入式Linux系统开发的工具嵌入式Linux系统开发需要使用一些常用的工具,下面是一些常用的工具和其功能的介绍:1. 交叉编译工具链:由于嵌入式设备和开发主机的处理器架构不同,无法直接在开发主机上编译和运行目标代码。
因此,需要使用交叉编译工具链,在开发主机上生成适用于目标设备的可执行文件。
2. 调试工具:在嵌入式Linux系统开发过程中,调试是非常重要的一环。
常用的调试工具包括GDB(GNU调试器)和strace(系统调用跟踪工具),它们可以帮助开发人员追踪程序的执行过程和定位错误。
3. 文件系统工具:嵌入式设备的存储资源有限,需要使用文件系统来组织和管理存储的数据。
常用的文件系统工具包括mkfs(创建文件系统)、mount(挂载文件系统)以及文件传输工具(如scp和rsync)等。
嵌入式软件开发环境安装和配置信息技术有限公司2009.061.本手册之目的本手册适用于刚开始学习或从事嵌入式软件开发的人员,他们对于嵌入式软件开发环境的安装、配置知之甚少,因此安装、配置过程均给予了详细的描述。
2.所需工具及其用途采取XP + 虚拟机+ Linux + Arm-Linux-Gcc+ Source Insight + Secure CRT:✓在XP基础上安装虚拟机✓在虚拟机中安装Linux,借助Linux上的编译器编译目标机上的执行程序✓在Linux中安装Arm-Linux-Gcc,用于编译嵌入式平台上的执行程序✓在XP中安装Source Insight,用于编辑代码✓在XP中安装Secure CRT,连接到目标机,用于运行执行程序如果你能熟练使用Linux,那么你可以直接在Linux中安装、配置相应的组件、工具,不必使用XP、虚拟机,也不必安装Secure CRT。
2.1. XP操作系统原则上可不要XP操作系统(也可是其它Windows操作系统),而是直接使用Linux 操作系统。
但由于大多数人对于Windows操作系统很熟悉,Windows下的很多工具使用起来也很方便,所以采用了XP + 虚拟机+ Linux的模式。
这样我们可以在熟悉的Windows 下高效率的工作。
2.2. VMWare采用了XP + 虚拟机+ Linux的模式,所以要安装一个虚拟机,根据实际情况,这里选用VMWare6.5.2。
2.3. Linux操作系统对于Linux系统的版本没有限制,Redhat、Ubuntu、Fedora等均可,这里选用目前比较常用的Ubuntu 8.10。
Linux安装完成后,还需要配置或安装:✓配置网络:必须配置好网络,方能进行以下操作✓设置更新源:设置Linux的组建更新源,更新组件✓安装vmware tools:提供Windows与Linux的互操作性✓安装SSH:只有安装SSH后,Secure CRT才能链接到Linux✓安装NFS:用于在目标开发板上挂载Linux上的目录2.4. Arm-Linux-Gcc编译器由于嵌入式运行平台的局限性,不大可能在嵌入式运行平台中安装编译器,需要在Linux系统安装编译器来编译程序。
forARM嵌入式Linux资料说明声明:forARM所提供的所有资料都是免费,资料涉及从C语言到嵌入式Linux。
1.关于forARM:---------------------------------------------------------------------视频配套OK6410开发板、AM335X开发板、210开发板、STM32开发板淘宝店:淘宝商店:明志电子科技网址:技术支持QQ:宁静致远:506793634李强:747576767谢贤斌:173985407方强:446876407嵌入式Linux实用教程QQ群:①:284013595(500人,已满)②:271641475(500人)2.《嵌入式Linux实用教程》视频清单:第1课:Linux基本操作指令第2课:Makefile第3课:Linux常用软件第4课:U-Boot-2013.04搭建适合OK6410模板第5课:初步编译U-Boot-2013.04第6课:U-Boot-2013.04启动分析1第7课:U-Boot-2013.04启动分析2第8课:SD卡启动U-Boot原理第9课:SD卡启动U-Boot-2013.04移植1(解开众多商家SD卡启动机密)第10课:SD卡启动U-Boot-2013.04移植2(解开众多商家SD卡启动机密)第11课:SD卡启动第12课:Signal # 8 caught错误第13课:MMC驱动移植第14课:FAT文件系统第15课:U-Boot命令第16课:NAND Flash移植(1)第17课:NAND Flash移植(2)第18课:NAND Flash移植(3)第19课:DM9000网卡移植第20课:Linux-3.8.3内核介绍第21课:初步测试内核(1)第22课:初步测试内核(2)第23课:下载地址和入口地址第24课:MTD分区第25课:NAND Flash移植第26课:DM9000网卡移植第27课:使内核支持YAFFS2文件系统第28课:制作YAFFS2文件系统第29课:LCD移植第30课:字符设备驱动之LED第31课:字符设备驱动之ADC第32课:块驱动第33课:tslib安装第34课:安装Linux和embedded版本Qt-4.8.4第35课:安装QtCreator编译环境第36课:Qt初体验之Hello第37课:Qt之LED第38课:Qt之ADC第39课:项目拓展学习(1)第40课:项目拓展学习(2)第41—50课:裸板程序设计3. 嵌入式Linux实用教程软件:Ubuntu10.04.4镜像、VMware-7.0.1虚拟机、Source Insight3.5+注册码、SecureCRT_6.6.1_、SD_Writer、UltraEdit10c、USB转串口驱动、等等嵌入式Linux 常用软件。
301© Jacob Beningo 2017J. Beningo, Reusable Firmware Development , https:///10.1007/978-1-4842-3297-2IndexAAbstract Data Types (ADTs)abstractions, 80definition, 81implementation data structure, 82initialization function, 83interface specification, 81operations, 81pop method, 84stack method initialization, 83Stack_Push, 85Abstractions, see Abstract DataTypes (ADTs)Application Programming Interfaces(APIs), 23architecture, 24characteristics, 49consistent look and feel, 53const keyword, 49documentation, 53flexible and configuration, 53Micrium uc/OS-III, 54naming conventions, 50uOS III, 52comparison (API and HAL), 58designing process, 53embedded-software developers, 49FreeRTOS TaskCreate, 54HAL design, 57scope, 48ThreadX tx_thread_create, 55wrappers, 55Assertion fundamentals assert.h header file, 68definition, 68input and pre-condition, 69macro implementation, 69Automating tests, 269BBoogeymanintegration issues, 35issues, 33microcontroller vendors, 34peripheral technique, 35ramifications, 34readability issues, 35Bootloaders framework, 252CCallback functionsArrayInit function, 88definition, 86elements to random numbers, 89implementation, 87initialization code, 87instances, 86lower-level code, 87signal handler, 87Classes definition, 80Cohesion, 11Commercial off-the-shelf (COTS), 1 Coupling method, 11C programming languagebit fields, 15conditional compilation, 18data type, 13demonstration code, 13preprocessor directives, 16structures and unions, 14DData hiding, 86Designing APIapplication framework, 246creation, 247embedded applicationsadvantages, 244application framework, 244disadvantages, 244hardware abstraction layer, 243implementation, 243modifications, 245modules, 245software frameworksbootloaders, 252console applications, 250FAT file system, 254parsers, 251RTOS and schedulers, 248 Design patterns, 90–91Device driver models, 70blocking driver, 70non-blocking driver, 70polling, 71Documentation, 121C codecoding style guide, 144commenting code, 143consistent commentlocation, 146Doxygen tags, 144explanation, 143file header, 145line command, 146mathematical typeidentification, 146template creation, 145update comments, 147 Doxygen (see Doxygen) DoxyWizarddiagrams setup, 131folder structure, 127mode setup, 129output setup, 130project setup, 127run tab, 128wizard tab, 129embedded software, 121enum and struct, 132 functions, 133code block, 136description block, 135factors, 133parameter and return block, 135 pre-condition/post-conditionblock, 135related block, 136revision log, 137start block, 134load operation, 122approaches, 123single source, 123software spectrum, 123Index302main.c file, 122main page, 140modules, 137@Addtogroup comment block, 139header file, 137source files, 138reusable template, 139Doxygen, 124comment fundamentals, 131control and develop documentation, 125 installation, 126Driversabstraction and ADT, 80component definition, 76component organization, 77components, 77–78expected results andrecommendations, 91files, 77fundamental unit, 76interface, 64, 78component identification, 66design contract, 66–67hardware abstraction layer, 65lasagna software architecture, 65outputs, 67pre-conditions, 67modules, 78naming convention, 78object-oriented programming, 79procedural language, 79EEEPROM devices, See alsoMemory devicesdatasheet, 221EepromErase_t, 239EepromRegister_t definition, 226extending HAL, 237_ext file, 239feature comparison, 222files, 238interface, 224memory devices, 221repeat, 237stubs and documentation templates functions, 227Init(), 228–229Read(), 229–230Write(), 230–231target processor, 231functions, 232initialization function, 232read function, 235write function, 233testing, 237write state enumeration, 226 Embedded-software processes/codebase, 295Encapsulation, 80, 86Error handling, 89FFAT file systems, 254Firmware projectadvantages, 4benefits, 4code reuse, 1development team, 3disadvantages, 4embedded-software, 5–6architecture, 20dependencies and interactions, 19design/reuse, 18Index303formal models, 21functional boundary, 19interfaces, 19low-level driver, 19portable firmware creation, 19three-layer model, 20features, 3HAL (see Hardware AbstractionLayers (HAL))microcontrollers, 2modularity, 9module coupling and cohesion, 10project development time, 2portability issues (see C programming language)qualities of, 8software, 3smart solar panel, 7standard revisions, 12Functional testingblack-box/white-box testingmethods, 264test-driven development, 265testing process, 264GGeneral-purpose input/output (GPIO) datasheet, 167HAL interface, 169microcontrollers, 168overview, 167peripheral features, 168stubs and documentation templates, 172 Dio.c, 182Dio_Config.c, 178Dio_Config.h, 174Dio.h, 180HAL organization, 174target processor, 192ChannelRead, 195ChannelWrite, 196Dio_ChannelToggle function, 196Dio_ChannelWrite function, 196GPIO initialization, 194pointer array memory map, 193RegisterRead, 197RegisterWrite, 197repeat option, 198test harnesses, 198HHardware abstraction layer (HAL), 21, 149 application layer, 22APIs, 30 (see also ApplicationProgramming Interfaces (APIs)) architecture, 23board-support package, 22benefits, 21, 33characteristics, 36, 150C99, 38coding standards, 36debugging software, 43deterministic and well-understoodbehavior, 41error-handling and diagnosticcapabilities, 42evaluation, 44extensible, 40hardware features, 39integrated regression testing, 43integration server, 43modern compiler, 38modular and adaptable, 40Firmware project (cont.) Index304reasonable documentation andcomments, 37well-defined coding standard, 37 configuration layer, 22 comparison list, 152design process, 151all-encompassing HAL, 161core features identification, 161Doxygen, 162initialization, 164iterate, 163multiple development kits, 164naming conventions, 164register-access hooks, 162second set of eyes, 162view, 163driver layer, 22factors, 46Good, Bad, and Ugly, 33GPIO peripheral, 47interfacecallback interface, 154creation, 153developers, 155generic definition, 154peripheral features, 153 landscape, 31microcontroller peripheraldatasheet, 46, 152 middleware, 22peripheral identification, 152, 160 platform, 31potential issues (see Boogeyman) software terminology, 22stubs and documentationtemplates, 155target processor(s), 158testing, 158Hardware in-loop (HIL) testing, 266 automating tests, 269COMM port, 267components, 267debugger, 267factors, 268Python scripts, 268regression, 268I, J, K, LInheritance, 80Internet of Things (IoT), 6Invariants, 68M, NMemory devicesflash and EEPROM devices, 219internal and external devices, 220issues, 220overview, 219Memory mapCPU, 63EEPROM, 63flash memory regions, 62generic microcontroller memory, 64memory, 64microcontroller, 62peripheral memory, 63RAM, 62–63ROM, 62Memory-mapping methodologiesarrays, 106controls, 101declaration, 104direct register access, 102methods, 101Index305non-constant pointer, 104pointers, 102register bit, 103structures, 105volatile keyword, 103–104Module coupling, 11OObject-Oriented Programming (OOP), 79 Objects definition, 80P, QPolling vs. Interrupt-driven drivers, 71 attitude determination and control, 76 DMA-controlled data transfer, 75Hello World, 72interrupts, 74printf statement, 72, 74transmit interrupt frequency, 73UART transmit interrupt duration, 74 Portable firmware see Firmwareprojectcharacteristics, 27code evaluation, 26portability, 27reuse software, 25,Post- c onditions, 68Practical approachdefinition, 284desired results and outcomesbusiness perspective, managementand shareholders, 281development costs, 282identification, 280quality increases, 283time to market, 281evaluation, 284metrics, 285phases, 278recognizing design patterns, 288results, 288software practice improvement, 280templates and checklists creation, 289tracking metrics, 285unpractical environment, 277VCS (see Version-control systems (VCS)) Pre-conditions, 68Project organization, 24RReal-Time Operating System (RTOS), 249 advantages, 249compiler optimizations, 249microchip, 249scheduler, 248scheduling algorithm, 250wrapper layer, 249Regression testing, 257, 268Renesas Synergy™ platform, 272 Reusable drivers, 95const keyword, 99extern and static keywords, 95explicit, 97function and variable scope, 97global variables, 96implicit, 96programming language, 96implementation, 117memory-mapping (see Memory-mapping methodologies)timer (see Timer driver)volatile keyword, 98Memory-mapping methodologies (cont.) Index306location, 99optimization, 98prevent code optimization, 99UART Tx, 98SScheduler, see Real-Time OperatingSystem (RTOS)Serial Peripheral Interface bus (SPI) advantages, 201architecture, 202datasheet, 202features, 203hardware level, 201interface, 204repeat, 216stubs and documentation templates design patterns, 205init function, 206module files, 206transfer function, 207target processorarray mapping, 209flow chart, 213initialization function, 210Spi_Transfer function, 212–213 testing, 215Side effects, 68Standard tests, 263TTest-Driven Development (TDD), 265 Testingapplication software, 270block diagram, 270deadlock, 272events, 271reusable firmware, 271task statistics, 271automation and regression, 258development teams, 258embedded system, 257functional testing (see Functionaltesting)HIL testing, 266regression testing, 257renesas Synergy™ platform, 272standard tests, 263unit test, 258Timer driverchannel definition, 110configuration structure, 109configuration table, 108, 110design pattern, 116driver interface, 116initialization function, 112init loop code, 115overview, 107peripheral channels, 109pointer arrays, 111steps, 108UUnit testing, 258cyclomatic complexityfunction, 261if/else statements, 262linearly independent paths, 261measurements, 260nodes (program statements), 262parameters, 261tools, 263function, 259harness test, 259Index307V, W, X, Y, ZVersion-control systems (VCS) add files, 294code-comparison tools, 295commit frequently, 293log information, 293–294 process definition, 294 lock modules, 294 merging code branches, 295Index308。
Linux操作系统第一章:Linux简介与系统安装实验一:实验环境搭建一台宿主机(Windows系统)加两台虚拟机(Desktop+Server)要求:(1)掌握VMware虚拟机的安装(2)利用VMware虚拟机安装Ubuntu Linux18.04桌面版操作系统(3)利用VMware虚拟机安装Ubuntu Linux18.04服务器版操作系统(4)从宿主机登录桌面环境和服务器环境(SSH登录)(5)练习涉及到的基本命令,如apt-get、ifconfig、ssh等(6)练习vim编辑文件基本操作等Tips:(1)绘制网络拓扑图(2)把遇到的问题和如何解决记录下来。
实验环境设置☐宿主机(Windows)•网络配置VMware Network Adapter(VMnet8)☐客户机•Ubuntu-Server(ubuntu-18.04.6-live-server-amd64)•Ubuntu-Desktop(ubuntu-18.04.6-desktop-amd64)虚拟机安装安装时网络类型选择NAT方式安装完成后的两台Ubuntu虚拟机宿主机:Windows记录宿主机IP地址客户机1:Ubuntu-Server命令行模式记录IP:192.168.126.130客户机2:Ubuntu-Desktop图形化操作方法记录IP:192.168.126.131NAT模式宿主机:Windows192.168.126.1192.168.126.130192.168.126.131客户机1:Ubuntu-Server客户机2:Ubuntu-DesktopSSH服务1.安装SSH服务2.启动SSH服务3.配置SSH服务(可选)4.验证SSH服务Desktop版客户机安装SSH服务Desktop版客户机安装SSH服务:sudo apt-get install openssh-serverDesktop版客户机启动SSH服务: sudo systemctl start sshDesktop版客户机启动SSH服务: sudo systemctl start sshDesktop版客户机端修改SSH配置文件:端口22修改为1022 vi /etc/ssh/sshd_configSSH验证-从宿主机连接Desktop客户机2: ********************.126.131SSH验证-从宿主机连接Server版客户机1: ***********************.126.130Desktop版客户机查看SSH状态:记录监听端口和连接情况Server版客户端1查看SSH状态Desktop版客户机安装 net-tools:sudo apt-get install net-toolsDesktop版客户机查看IP地址: ifconfigDesktop版客户机查看网络连接情况:Netstat -aServer版客户机查看网络连接情况:Netstat -a。
PAM9100A-VER1.9 计算机板中ARM-LINUX 开发环境的安装与配置飞旭PAM9100A-VER1.9 计算机板是由北京飞旭科技有限公司设计开发,主处理器基于Atmel 公司的AT91RM9200 ARM 处理器。
AT91RM9200 内嵌ARM920T 核,带有全性能的MMU,具有高性能、低功耗、低成本、小体积等优点,广泛地应用在各种嵌入式系统中,如通信、军事、航空、航天、工业控制、交通等领域。
飞旭PAM9100A-VER1.9 计算机板是专门针对工业级嵌入式应用开发的一款ARM 开发板,开发板的通讯接口比较丰富,非常方便用户进行工业级场合的数据采集通讯应用开发。
系统由核心和主板组成,核心板带有CPU和32-128MB的SDRAM、4MB NorFlash,主板有1 个64MB NandFLASH(可换16-64MB NandFLASH),1 个10/100M 以太网接口,1个USB Host,,1 个SD 卡接口,RTC,3 个串口,1 个JTAG 接口和1个PC104 外部扩展总线,用户可以根据自己需要自由扩展。
开发板中运行的软件是针对AT91RM9200 定制的ARM-LINUX 内核和根文件系统,开发光盘中提供的主要应用软件开发工具为ARM-LINUX 编译器和ANJUTA 和SourceNavigator编辑器。
可以编译应用软件和LINUX 内核以及根文件系统。
将安装光盘放入计算机中,在REDHAT9.0 中应可以自动挂装CDROM 到/mnt/cdrom 目录下,(一般为/mnt/cdrom,Fedora 5 默认挂载在media/disk 下)。
这种情况下则:cd /mnt/cdrom(Fedora 5版本则执行cd /media/disk)./install.sh (运行安装脚本,如权限不够,请执行命令sh ./install.sh)4.1 REDHAT LINUX 9.0的安装在一台PC 上安装RedHat LINUX9.0,选择Custom 定制安装,在选择软件Package 时最好将所有包都安装,需要空间约2.7G,如果选择最后一项:everything,即完全安装,将安装3 张光盘的全部软件,需要磁盘空间大约5G。
嵌入式linux应用开发完全手册
嵌入式Linux应用开发完全手册
一、前期准备
1. 分析终端设备环境—定制Linux发行版
要统计终端设备的处理性能、运行时可用资源和可用设备,以此确定可用的执行环境和硬件需求,确定适合终端设备构建Linux内核固件形式的Linux发行版本。
2. 开发环境搭建—构建buildroot环境
为了能从源码构建出符合终端设备和应用程序需求的Linux系统,需要构建出环境,可以编译内核以及外围软件在Linux下构建程序,以此为开发软件准备编译运行环境,可以使用Busybox和Buildroot等。
二、应用软件开发
1. 软件框架设计—工程预处理
软件框架设计是应用软件的基础,根据软件的功能和硬件构建环境,进行容量分析和形态化,分析设计软件工程框架,优化框架,将多个软件模块编译联编成一个完整的整体,构建业务功能交互流程,提高软件的执行效率和体验度。
2. 软件编译—工程链接编译
针对开发语言环境,例如Java或C、C+。
龙芯1x嵌入式集成开发环境 1.0使用说明书苏州市天晟软件科技有限公司2021年4月目 录1、简介 (5)1.1 主要特点 (6)1.2 目录结构 (6)1.3 文档约定 (7)1.3.1 文件扩展名 (7)1.3.2 指定文件名 (7)1.3.3 头文件 (7)1.4 项目开发过程 (7)2、初次使用 (8)2.1 语言设置 (8)2.2 工作区目录 (9)2.3 GNU 工具链 (9)3、用户界面 (12)3.1 菜单栏 (12)3.2 工具栏 (14)3.3 编辑面板 (14)3.3.1项目视图 (15)3.3.2 代码解析 (17)3.3.3 文本编辑器 (18)3.3.4 消息窗口 (19)3.4 调试面板 (20)3.4.1 断点列表 (21)3.4.2 CPU 寄存器 (21)3.4.3 观察值 (22)3.4.4 汇编代码 (22)3.4.5 函数调用回溯 (22)3.4.6 GDB 交互命令 (22)3.5 状态栏 (23)4、项目管理 (24)4.1 新建项目向导 (24)4.1.1 第一步项目基本信息 (24)4.1.2 第二步设置Mcu、工具链和操作系统 (25)4.1.3 第三步实时操作系统选项 (26)4.1.4 第四步确认并完成向导 (29)4.1.5 新建项目示例 (30)4.2 基本操作 (30)4.2.1 打开项目 (30)4.2.2 保存项目 (31)4.2.3 关闭项目 (31)4.2.4 项目另存为 (31)4.2.5 成批添加文件 (32)4.2.6 成批移除文件 (33)4.3 项目属性 (34)5、文档管理 (37)5.1 文件操作 (37)5.1.1 新建源代码文件 (37)5.1.2 新建头文件 (37)5.1.3 文件重命名 (38)5.1.4 文件移动 (38)5.1.5 文件删除 (39)5.2 文件夹操作 (39)5.2.1 新建文件夹 (39)5.2.2 重命名文件夹 (39)5.2.3 移动文件夹 (40)5.2.4 删除文件夹 (40)5.3 Drag & Drop (40)6、文本编辑器 (41)6.1 编辑器选项 (41)6.1.1 常用 (41)6.1.2 字体 (42)6.1.3 颜色 (42)6.1.4 代码解析 (43)6.1.5 符号补全 (43)6.1.6 自动保存 (44)6.2 基本操作 (44)6.2.1 编辑 (44)6.2.2 查找 (44)6.2.3 替换 (45)6.2.4 在文件中查找 (46)6.3 其它操作 (47)6.3.1 打开头文件/文件夹 (47)6.3.2 定位语句定义原型 (47)6.3.3 代码解析项跳转 (48)6.4 插入代码向导 (49)6.4.1 插入RTOS 任务代码 (49)6.4.2 插入SPI/I2C驱动代码 (50)6.5 信息提示 (52)7、项目编译 (53)7.1 编译选项 (53)7.1.1 MIPS & BSP Options (54)7.1.2 GNU C Compiler - C 编译器 (54)7.1.3 GNU Assembler - 汇编语言编译器 (58)7.1.4 GNU C++ Compiler - C++ 编译器 (58)7.1.5 GNU C Linker - C 链接器 (58)7.1.6 软浮点算术库 (60)7.2 开始编译 (61)7.2.1 编译成功 (61)7.2.2 编译失败 (62)7.3 项目清理 (62)8、项目调试 (63)8.1 调试选项 (63)8.1.1 主要项 (63)8.1.2 调试器 (64)8.1.3 启动项 (65)8.1.4 源代码 (66)8.2 调试断点 (66)8.2.1 在编辑器中设置断点 (66)8.2.2 断点列表 (67)8.3 开始调试 (67)8.3.1 代码下载 (67)8.3.2 单步运行 (68)8.3.3 连续运行 (69)8.3.4 停止调试 (69)8.3.5 观察值 (69)8.3.6 函数调用回溯 (70)9、实用工具 (71)9.1 NOR Flash 编程 (71)9.2 NAND Flash 编程 (72)9.3 硬件设计助手 (73)9.3.1 龙芯 1B 芯片 (74)9.3.2 龙芯 1C 芯片 (75)10、系统安装 (76)10.1 运行环境 (76)10.1.1 安装MSYS 1.0 (76)10.1.2 安装MSYS2 (76)10.2 安装LoongIDE (76)10.2.1 运行安装向导 (77)10.2.2 LxLink驱动 (77)10.3 GNU 工具链 (78)10.3.1 SDE Lite for MIPS工具链 (78)10.3.2 RTEMS GCC for MIPS工具链 (78)10.4 注意事项 (78)1、简介缩写LS1x DTK:Embedded DTK for LS1x 龙芯1x嵌入式开发工具LoongIDE: Embedded IDE for LS1x 龙芯1x嵌入式集成开发环境LS1x DTK用于龙芯1x芯片的嵌入式开发解决方案,包括创建、构建以及调试用户应用项目,完美支持龙芯1x芯片的工业级应用的开发。
嵌入式开发参考书籍嵌入式开发是计算机科学中一个重要的领域,涉及到嵌入式系统的硬件和软件的设计和开发。
为了帮助初学者和专业人士更好地掌握嵌入式开发技术,选择一本好的参考书籍是至关重要的。
本文将向您介绍几本嵌入式开发的优秀参考书籍,帮助您更好地入门和深入学习。
1. 《嵌入式系统原理与实践》 - 黄仁勋《嵌入式系统原理与实践》由黄仁勋编著,是一本系统而全面地介绍嵌入式系统原理和实践的经典教材。
本书内容结构清晰,从基础的嵌入式系统概念开始,逐步深入介绍了嵌入式系统的硬件与软件设计、操作系统原理、嵌入式系统应用开发等内容。
书中还包含了大量的案例分析和实践项目,帮助读者将理论与实践相结合,提升自己的实际操作能力。
2. 《嵌入式系统设计与开发》 - Peter MarwedelPeter Marwedel的《嵌入式系统设计与开发》是一本详尽全面的嵌入式系统设计教材。
本书覆盖了嵌入式系统设计的各个方面,包括硬件平台、嵌入式软件设计、嵌入式操作系统、调度和调试等内容。
书中的示例和案例使得理论更易于理解,而且书中的附录还提供了一些额外的资源和实践项目。
这本书适用于嵌入式系统的初学者和有经验的开发人员,是一本不可多得的嵌入式开发参考书籍。
3. 《ARM Cortex-M系列嵌入式系统原理与实践》 - 刘振兴《ARM Cortex-M系列嵌入式系统原理与实践》由刘振兴编写,主要介绍了ARM Cortex-M系列微控制器的原理和实践应用。
这本书详细讲解了Cortex-M系列处理器的特点和架构,以及嵌入式开发中常见的外设和通信接口。
此外,书中还包括了大量的实例代码和实际项目,可以让读者更好地理解和应用所学知识。
无论您是初学者还是有经验的嵌入式开发人员,这本书都会给您带来帮助和指导。
4. 《嵌入式Linux应用开发完全手册》 - 罗磊《嵌入式Linux应用开发完全手册》是一本针对嵌入式Linux应用开发的实用指南。
本书全面介绍了嵌入式Linux系统的构建、配置和定制,以及应用程序的开发和调试。
基础是你已经安装了Ubuntu,以及相关软件:超级终端minicom 及C/C++ compiler environment。
在Ubuntu上可使用下面终端命令安装 minicoom和编译环境。
#sudo apt-get install minicom#sudo apt-get install build-essentialStep 1:将光盘Linux 目录中的arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 复制到Lubuntu的当前目录下,执行解压命令:#sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
这样 arm-linux-gcc 的相关文件就Copy到root用户的Opt目录中Step 2:把编译器路径加入系统环境变量,运行命令#sudo gedit ~/.bashrc编辑~/.bashrc 文件, 注意“ bashrc ” 前面有一个“ . ”,修改最后一行为export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin注意路径一定要写对,否则将不会有效。
如图,保存退出。
入arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。
编译链接 arm-qte-4.7.01) 解压包到自己制定的目录,例如 arm-qte-4.7.02) 终端中运行 ./build-all(首先,注意不能双击运行,必须在终端中运行;其次,不使用 sudo)大约要安装2个小时当运行到出现如下提示后:cd src/tools/bootstrap/ && make -f Makefile installmake[1]: 正在进入目录`/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/bootstrap'make[1]: 没有什么可以做的为 `install'。
make[1]:正在离开目录`/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/bootstrap'cd src/tools/moc/ && make -f Makefile installmake[1]: 正在进入目录`/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/moc'mkdir: 无法创建目录“/usr/local/Trolltech”: 权限不够make[1]: *** [install_target] 错误 1make[1]:正在离开目录`/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/moc'make: *** [sub-moc-install_subtargets-ordered] 错误 2./build-all: 第 12 行: cd: /usr/local/Trolltech/QtEmbedded-4.7.0-arm: 没有那个文件或目录在终端中运行:cd qt-everywhere-opensource-src-4.7.0sudo make install加入环境变量(步骤类似Step2,在最后一行再加入)#sudo gedit ~/.bashrcexport PATH=$PATH: /usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin下载和安装 Qt SDK for Open Source C++ development on Linux/X11 32-bit - Offline Installer(已经上传到我们的共享目录中)On Linux/Unix, you need to make the file executable in order to run it. You can either do this with your desktop's file manager or, at the command line, type:在终端中运行:chmod u+x Qt_SDK_Lin32_offline_v1_1_2_en.runYou should now be able to execute the file as normal. You can do this from the command line by typing:在终端中运行:./Qt_SDK_Lin32_offline_v1_1_2_en.run随即进行图形化的Qt_SDK的安装(自己定制全安装),其包含了creator,designer等等。
Step 5:配置QT Creator以支持开发和在desktop和arm上程序的发布。
在打开的QT Creator进入tools -> options,在Qt4下加入支持ARM的qmake命令的路径,如图:然后要将交叉编译的工具链加入到Tool Chains,如下图:以后新建项目QT Creator时会自动包含对ARM的编译选项。
如果对ARM的编译失败,可以打开Projects,选择ARM的选项,展开build environment,检查PATH一项中是否有/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin,没有则加入;注意分隔用冒号。
检查编译后的文件(例如HelloARM)是否在ARM上运行的方法:#file HelloARM显示出带有ARM的信息即可。
将该文件拷贝到SD卡中可以通过minicom在板子上运行。
Step 6:配置超级终端以及通过超级终端调试在终端输入minicom –s配置端口号为ttyS0,Hardware Flow Control改为No;然后退出(不是退出minicom);minicom初始化后显示root命令行即成功。
如果不成功端口号改为ttyS1重试。
要保存配置,用sudo minicom进入进行配置。
要用minicom的指令退出,强行关闭终端会让端口无法释放。
通过minicom运行在SD卡上的程序步骤:#cd sdcard#./HelloARM –qws&可以在板子上看到运行结果。
(目前存在的问题,无法进行输入和交互. ) maybe1)需要配置目标机的环境2)需要准备一个sh文件未完待续…Step 7:部署到arm上直接运行基本原理是:修改宿主机上arm 版本的QtE-4.7.0,然后部署到目标机(arm 板)上。
宿主机上QtE-4.7.0的目录是: /usr/local/Trolltech/QtEmbedded-4.7.0-arm假设1) 我们编译的arm应用程序位于当前用户的Fshy_Arm_Build目录, 其包括两个文件:input.txt 和 test2) 我们已经在 QtE-4.7.0的demos目录中建立了应用程序的目录wudang/fshy1. 进入我们的程序的输出目录:# cd Fshy_Arm_Build2. 将input.txt 和 test 文件copy到目录# sudo cp input.txt test /usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/wudang/fshy3. 编辑部署文件,config.xml该文件位于 demos/embedded/fluidlauncher目录下# sudo gedit /usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/embedded/fluidlauncher/config.xml修改后的文件如下:<demolauncher><demos><example filename="../embeddedsvgviewer/embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer.png" args="../embeddedsvgviewer/shapes.svg"/><example filename="../styledemo/styledemo" name="Stylesheets" image="screenshots/styledemo.png"/><example filename="../../deform/deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/><example filename="../../pathstroke/pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/><example filename="../../wudang/fshy/test" name="String Searching" image="screenshots/wudang.jpg" args="-small-screen"/><example filename="../../../examples/widgets/wiggly/wiggly" name="Wiggly Text" image="screenshots/wiggly.png"/><example filename="../../../examples/painting/concentriccircles/concentriccircles" name="Concentric Circles" image="screenshots/concentriccircles.png"/></demos><slideshow timeout="60000" interval="10000"><imagedir dir="slides"/></slideshow></demolauncher>注意:1)需要根据应用程序,准备一张Logo图片,其大小需要符合要求,格式可以是jpg或者png等,例如 wudang.jpg2)将其copy到demos/embedded/fluidlauncher/screenshots4. 回到本用户的根目录,修改 mktarget 文件,并打包。