首页 > 其他分享 >guotianxiang_arm笔记

guotianxiang_arm笔记

时间:2023-08-29 16:23:09浏览次数:34  
标签:文件 QT guotianxiang 文件系统 笔记 目录 ---- 编译 arm

第四讲:
1)裸机程序(.bin文件)烧入NOR-FLASH中,并选择从NOR FLASH启动。
2)使用H-JTAG烧写裸机程序:先加载.hfc配置文件,识别FLASH;再烧写bin文件。
3)u-boot.bin下载:DNW软件,下载到NAND-FLASH。通过USB口,提前装好USB驱动。
4)在uboot启动后,整板测试程序可直接下载到SDRAM中运行,使用DNW软件。
5)在uboot启动后,下载内核,下载文件系统:DNW软件。
6)查看IP地址命令:ifconfig eth0;也可设置ip地址:ifconfig eth0 192.168.1.10;
7)“mntud1”命令:挂载U盘。
8)mount /dev/mmcblk0p1 /mnt/sd 命令:挂载SD卡到SD目录。umount /mnt/sd命令:卸载SD卡。

第五讲:
1)WMware虚拟机软件,虚拟机之家,virtualbox虚拟机软件。
2)安装虚拟机,选择IDE硬盘类型。
3)安装VMWARE TOOLS;---鼠标自由移动。
4)配置samba网络服务器;----设置与windows共享的目录及登录用户。
5)配置IP地址与WINDOWS同一网段;----ifconfig eth0 125.223.119.100
6) 命令:service smb restart;---重启SMB服务器;
7)在windows中可直接访问IP地址来访问LINUX服务器及其共享目录;
8)chmod 777 xgc;----设置共享目录读写权限。
9)映射网络驱动器;-----更快捷的访问服务器目录的方式。
10)命令setup-----system service----设置smb开机启动;空格选中。
11)设置NFS服务器;与smb类似。

第六讲:
1)linux指令详解.pdf;
2)etc目录:配置文件;home目录:用户目录;usr目录:用户应用程序和文件;
3)命令su xgc----切换到xgc用户;只写su是回到root用户;
4)命令ls -a;---显示所有文件,包括隐藏文件;命令ls -l;---显示详细信息;
5)-r目录选项,-f强制执行;
6)pwd:显示绝对路径;
7)tar xzvf file -C/home:解压file(.gz后缀)到home目录下;
8)chmod 777 file:设定管理员、同组用户、其它用户为最高权限(读、写、执行);
9)-ps:进程查看;
10)vi file:查看或创建文件;然后a或i进行编辑,esc返回;:然后q或wq(保存)或q!(不保存);
11)x删除字符;dd删除整行;u恢复操作;yy复制整行;p粘帖;o新建一行;
12).C或.cc:C++程序;
13)gcc -o filename file.c:编译file.c为filename文件;
14)GNU make:批量编译文件;执行configure生成Makefile文件(定义了编译要求),然后make命令启动编译;
15)shell:linux命令解释器,全功能编程环境,如ash,bash等等;

==================================================================================================================================
第4讲:软件操作示范。
nor flash---烧写整板裸机测试程序---使用H-JTAG软件。
使用串口软件SecureCRT显示调试界面。
出厂时,nor flash中是uboot程序。
操作系统一般下载到NAND FLASH中运行,步骤:
1)使用H-JTAG下载UBOOT到NOR FLASH,然后重启。
2)连接好USB口,事先安装好USB驱动,使用DNW软件烧写U-BOOT到NAND FLASH,然后重启。
3)在串口的启动界面,按下空格,进入下载模式。否则会进操作系统。(如果NANDFLASH已有系统)
4)在uboot启动界面,可直接下载到SDRAM中运行整板测试程序。
5)通过DNW软件下载zImage.bin系统内核到NANDFLASH。
6)然后通过DNW软件下载文件系统到NANDFLASH。
7)输入7,启动操作系统,然后可输入一些命令,对板子进行测试。
8)此时,如果下载其它文件系统,则可在uboot界面中直接下载。
9)如果文件系统还含有其他安装文件,则可先放到U盘中,再用开发板识别U盘,继续执行U盘中的安装程序。
===============
第5讲:linux安装。
www.xuniji.com
vmware虚拟机软件。
LINUX安装选项:选择较大的硬盘安装,定制安装,服务器,开发工具,管理工具,系统工具,关闭防火墙。
在linux下继续安装vmware tools工具包,让鼠标可自由移动。
在LINUX下配置samba服务器,用来与windows共享硬盘和打印机。需配置用户及权限,共享目录,设置与windows同一网段IP。再在linux下设置共享目录的权限,让windows访问。再在windows下将该目录映射为网络驱动器,作为硬盘分区使用。然后配置linux系统,让其启动后自动运行samba服务器。
在LINUX下配置NFS服务器,用于访问远端系统和文件。配置目录,用户,权限后,配置linux使之启动后自动运行nfs服务器。
===============
第6讲:
1.LINUX常用命令;
2.VI编辑器;
3.gcc编译器;GCC是支持更多编程语言及包含gcc(c编译器)的更全面的软件工具。
4.GNU代码维护工具。make命令及makefile;makefile文件可通过软件工具生成。
5.shell的定义及脚本编程;是一种命令操作界面;脚本相当于多个命令组成的批处理文件。
================
第7讲:交叉编译
1)gcc命令选项:-c生成目标文件,不链接;-S转为汇编代码;-E只运行预编译,不生成文件;-o生成输出文件;这几个选项可同时使用,用空格分开。
2)头文件目录默认是/usr/include,库文件默认是/lib和/usr/lib;可通过-IDIR和-LDIR命令选项增加其它头文件和库文件路径。-ILIBRARY是指定链接时需要的函数库。
3)其它gcc编译选项。-w,-Wall,-shared,-static;-O0,-O1,-O2(建议用),-O3
4)C++程序须使用g++编译器。
5)下载并解压交叉编译器。使其放在应有的目录下,并在其bin目录下找到执行程序。该执行程序的文件名就是编译命令。通过/etc/profile文件设置环境变量,并进行soure识别生效,可使该执行程序作为编译命令。
6)对于源文件工程,如果没有makefile文件,则运行其configure文件,可生成makefile文件。修改其中的gcc命令便可用新的编译器编译。
================
第8讲:windows工具
0) SecureCRT设置:使用Serial;波特率115200;取消RTS/CTS勾选;用串口线连接电脑和开发板;可用于调试观测;
1)使用notepad++到虚拟机上编辑代码文件,而不使用vi编辑器了;
2)ADS1.2打开的工程文件后缀是.mcp,不能放在中文路径下;
3)project----remove object code可清除以前的工程路径,防止编译报错;
4)使用电脑并口连接JTAG下载器到开发板,在H-JTAG中设置并口地址和JTAG模式(wiggler);
5)H-FLASHER-V0.9.2版本支持NANDFLASH;选择FLASH类型,设置配置参数,设置内存初始化寄存器(提供文件),然后进行烧写设置并烧写;(演示了NOR FLASH的UBOOT)
6)使用windows连接USB线到开发板,在windows下安装由三星提供的USB驱动;
7)在uboot界面,选择下载项。然后使用DNW软件,usb port---transmit来传输操作系统内核镜像文件到开发板,演示的是下载到NANDFLASH;
===============
第9讲:
1)MMU----虚拟内存管理单元;
2)MPU----内存保护单元;
3)ARM中,字是32位;大端big-endian:高字节在字的低地址中;
4)快速中断模式:用于高速处理中产生的高优先级中断;管理模式:操作系统的保护模式;系统模式:访问系统资源的特权模式;
5)异常:执行指令时出现的错误;用中断方式处理。
6)AHB总线:系统总线,用于高性能高速连接;APB总线:外围总线,用于低速外围设备连接;
7)MPLL:FCLK给CPU用;HCLK给AHB总线用;PCLK给APB总线用;UPLL:UCLK给USB用;
8)快速中断:FIQ;没有优先级判断过程。
9)中断相关寄存器:中断源挂起SRCPND;中断源屏蔽INTMSK;中断模式:INTMOD;中断挂起:INTPND;子中断源挂起SUBSRCPND;子中断源屏蔽SUBINTMSK;
===============
第10讲:
1)32位的ARM只支持1GB空间寻址,剩余空间用于内部寄存器,或保留。
2)通过独立的片选和地址复用,寻址1G空间。
3)OM0,OM1设置BANK0总线宽度,可决定从什么芯片启动。
4)SDRAM内存内容:程序代码及常量,堆区,栈区,中断向量表;启动前先配置内存;BWSCON寄存器:总线宽度及控制;还有BANKCON,BANKSIZE,MRSR等寄存器;
5)NANDFLASH的启动过程:通过起步石SRAM缓冲区进行。NANDFLASH前4KB代码被复制到起步石,再映射到BANK0地址空间,被CPU执行。然后跳转到SDRAM执行。
6)NANDFLASH通过寄存器进行访问,并支持半页读取操作命令。
=============
第11讲:裸机程序设计过程
1)Codewarrior IDE设计;AXD编译调试;
2)new project------arm executable image;new file----main.c(命名带后缀)---add to project---DebugRel;project----add files增加头文件;project---creat group可创建分组目录;
3)DebugRel settings----Target settings---Post linker----arm fromELF(生成可执行文件);
----language settings----processor----ARM920T;
----Linker----arm linker----RO base设置为内存起始地址0X30000000;
----options----Image entry point也填写内存起始地址0X30000000;
----layout----Object/symbol填写2440init.o(即2440init.s编译后的目标文件);
----Section填写Init(即2440init.s中AREA命令后的名称);
----arm fromELF----output format选择plain binary;
4).s文件是初始化程序;
5)AXD软件----options----Configure Target----add找到H-JTAG安装目录下的H-JTAG.dll文件---configure;
6)nand flash中不应有残留程序,否则会引起被调试程序工作不正常;
7)2440init.txt文件:是用于SDRAM的初始化脚本;在AXD中要先运行此脚本:options---configure interface---session file----run configuration script选择此文件,然后关闭并重新运行AXD;
8)J-LINK是USB口,也可用于调试;(H-JTAG是并口)首先安装J-LINK驱动;然后在AXD下增加配置J-LINK的JLinkRDI.dll,其安装目录在SEGGER文件夹下;
9)LED驱动用到的三个寄存器:rGPFCON,rGPFUP,rGPFDAT;
=============================
第12讲:硬件电路应用举例
=============================
第13讲:
VIVI专门针对三星ARM设计的BOOTLOADER;
=============================
第14讲:U-BOOT
1)使用3.3.2版本编译器编译。uboot代码修改自smdk2410的boot代码(1.1.6版本)。目录讲解;
2)boot第一阶段:start.s:硬件初始化;调用board/smdk2410/lowlevel_init.s准备RAM空间;跳转到lib_arm/board.c和start_armboot()函数;
3)第二阶段:start_armboot()函数;初始化cpu,nor flash,环境变量等;跳转到common/main.c/main_loop()函数;在main_loop中选择启动模式或下载模式;
4)具体修改过程:config.mk中软浮点注释掉;然后再修改相应系统环境参数、驱动程序、头文件等等;最终生成uboot.bin文件,用H-JTAG烧写该文件到NOR FLASH即可。
5)如果要识别NAND FLASH,则需要修改驱动相关程序;如果要让NAND FLASH支持启动,则还要修改START.S文件,编写NAND FLASH启动函数;
6)作者还介绍了添加DM9000网口驱动和设计uboot启动菜单的过程;
===========================
第15讲:LINUX内核分析和配置
1)ARM体系结构的内核下载:www.arm.linux.org.uk/developer,使用2.6.31版本内核;
2)目录分析,MAKEFILE文件的作用及几种配置界面;
3)内核启动过程:第一阶段:执行arch/arm/kernel/head.s及head-common.s,执行arch/arm/mm/proc-arm920.s,调用start_kernel()函数;完成运行环境设置;
4)第二阶段:执行init/main.c,调用rest_init()进程;完成初始化全部工作;
5)编译内核后生成的文件:vmlinux(未压缩);zImage(由vmlinux经zgip压缩得到,一般小于2MB);uImage(uboot专用);使用make zImage命令进行生成;
6)推荐使用4.1.2版本的EABI编译器提高效率;如果内核不支持EABI编译(出现attempt to kill init!错误),则配置内核代码,使其支持EABI编译;
============================
第16讲:给内核加驱动
修改驱动文件,配置内核选项(make menuconfig),重新编译内核并下载内核。(NAND FLASH,LCD,DM9000,SD卡)
u-boot中也有分区,但与内核分区不同。内核所有分区在U-BOOT中只是其中一个分区。在U-BOOT中可使用“nand write 内存地址 kernel”命令,来写内核的NAND FLASH分区。
文件系统yaffs2也是类似处理,将文件系统源码通过补丁定义到内核源码,并配置内核选项。只是在下载内核后要另外下载文件系统的bin文件。
挂载----卸载。SD卡驱动安装后需要将设备名挂载到某个目录下,供访问。使用mount命令挂载。卸载则是弹出SD卡。
usb驱动直接配置内核即可。
其它设备驱动:可通过源代码编译,生成.ko文件。配置内核选项为M类型驱动。上传(命令rz)这些.ko文件到特定目录下(lib/modules/2.6.31)。然后可通过insmod和rmmod命令来随时加载或卸载相应模块的驱动。可通过lsmod命令查看当前已加载的驱动模块。模块测试程序也可以编译并放到usr/bin目录下,然后通过自定义命令执行测试。此类驱动不需要编译内核。
=============================
第17讲:构建根文件系统
LINUX提供了虚拟文件系统接口,用于和各种文件系统对接。对接时,需能正确加载该设备的根文件系统。否则会导致加载失败。
目前主流是yaffs2文件系统。支持大页NAND FLASH。
linux的文件系统目录结构。
制作命令集-------使用busybox编译源码。www.busybox.net.使用1.15.2版本。
首先修改busybox源码的makefile,然后配置内核的busybox选项。安装busybox后则会生成所需的命令文件,复制到指定目录(即文件系统框架目录)下。并复制其他文件到指定目录。
文件系统的执行过程,一些初始化参数和文件设置。
文件系统框架文件准备好以后,使用镜像制作工具(mkyaffs2image程序),将其转换为yaffs2文件系统镜像,然后下载到开发板。下载时,该镜像属性设置为777.
下载时,在串口终端选择“下载文件系统”,然后打开USB上传程序,上传yaffs2系统文件。
后续开发均在文件系统中进行。
============================
18讲:应用程序移植
NFS文件系统:开启LINUX NFS服务器后,支持通过网络访问开发板资源。
挂载NFS文件系统的方式---参照手册。
在etc/profile中可使用alias命令简化命令,如将ls -l简化为ll。
Boa的web服务器程序:支持浏览器访问开发板上的网页。---参照手册。
madplay音乐播放器。---参照手册。
开发板的DM9000芯片和电脑独立网卡之间的兼容性存在问题。RTL8139网卡也是不行的。主板板载网卡可以。
==============================
19讲:字符型设备的驱动程序开发
1)驱动程序工作在内核中。需要熟悉硬件、C语言、及操作系统驱动机制。
2)应用程序通过库函数调用,以文件调用的方式使用驱动程序;
3)驱动程序的示例。file_operations结构体,module_init和module_exit函数;
4)设备类型:字符设备,块设备,网络设备;
5)主设备号相同的设备,其驱动程序相同;
6)驱动程序受内核控制,可挂载或卸载某个设备的驱动程序;(insmod和rmmod指令)
7)在dev目录下,可通过ll命令(即ls -l)来查看某个设备的设备号,或使用cat /proc/devices命令查看dev目录下的所有设备信息;
8)驱动程序不能调用标准c库函数,其内部主要是初始化(注册)、操作函数、退出(释放);
9)中断处理:申请、释放、禁止、允许四种操作;可在驱动程序中调用各种中断函数;(request_irq,free_irq,disable_irq,enable_irq,local_irq_disable,local_irq_enable)
10)同步机制:即多个进程或线程对资源访问的安全机制。包括:自旋锁,信号量,读写锁,顺序锁,读备份更新(RCU)等,都有相应函数。
==============================
第20讲:其他类型设备驱动(无声音)
1)块设备,网络设备,framebuffer(图形设备),音频设备;
==============================
第21讲:QT图形界面开发
1)要有C++基础;
2)LINUX的GUI架构---X Server + Graphic lib + Toolkits + window manager + 桌面应用程序 + I18N;
3)QT:跨平台的C++ GUI库及各种数据库等等;分为商业和开源两种,基于开源版本的开发程序需遵守GPL协议。
4)QT包含:类库,QT Designer(界面),QT Linguist(语言家),QT assistant(帮助);
5)QT的源码在不同的操作系统平台下,需要使用不同的QT版本进行编译,但源码所用的API都是相同的;
6)QT的安装:4.5.3版本;
7)QT/E等价于QTopia core,从4.1版本开始并入了QTopia桌面应用环境;QT/E曾经与QTopia并列作为开发环境。
8)在QT安装完成后,修改/etc/profile文件,并使用source /etc/profile命令使设置生效。
9)在QT的example目录下,有assistant(QT助手文档);
================================
第22讲-上:QT在ARM平台的移植
1)安装tslib触摸屏矫正库,这个库不属于QT的库。没有configure和make时,运行autogen.sh;中途安装了autoconfig2.64和m4工具;
2)将tslib复制到根文件系统usr/local/tslib目录下,并修改tslib的配置文件ts.config;然后复制tslib中的校正程序到根文件系统的usr/bin目录下。
3)安装QT/E-4.5.3版本,选择不编译某些文件,及要使用tslib;安装到usr/local/Trolltech/QT-E目录下;
4)使用QT/E的qmake生成make文件,再生成examples目录;
5)将QT/E的库文件复制到根文件系统的/usr/lib目录下,但是删掉*.la和*.prl文件(不需要);还要将字体文件目录fonts复制到usr/local/Trolltech/Qt-E的目录下;复制wiggly程序到usr/bin目录;
6)写一个qtconfig脚本文件(内含触摸屏配置参数),并复制到根文件系统的usr/bin目录下,然后在文件系统的环境变量文件中配置该qtconfig脚本文件,使之能运行;
7)使用文件系统制作工具,将根文件系统目录制作成.bin文件;
8)使用DNW软件下载.bin文件系统到开发板,重启;
===============================
第23讲:QT应用程序开发
1)《24小时学通QT编程》;
2)编译QT程序:#qmake –project,#qmake,#make;
3)元对象编译器MOC:如果C++源文件的头文件中包含Q_OBJECT的宏定义,则生成宏的源文件;
4)Qt程序的编译过程:
g++ -c –o myqt.o myqt.cpp//源文件编译
moc myqt.h –o moc_myqt.cpp//头文件编译,生成宏的源文件
g++ -c –o moc_myqt.o moc_myqt.cpp//宏的源文件编译
g++ -o myqt myqt.o moc_myqt.o –lqt//整体编译
5)信号和槽机制;
==============================
第24讲:智能家居
1)使用开发板作为BOA网页服务器,并作为受控端;
2)CGI:公共网关接口,运行于BOA服务器上,通过服务器与用户的浏览器通信,GGI脚本程序由C语言编写,使用gcc编译器编译成*.cgi文件;
3)在BOA服务器目录下放置网页、按钮图片,*.CGI文件等等;作者使用html语言设计了网页;
4)也可做视频服务器,设置端口号;
=========================
第25讲:开发工具的使用
1)USB转串口;
2)J-LINK配合ADS使用,调试硬件,烧写UBOOT到NOR FLASH,并从NOR FLASH启动;

标签:文件,QT,guotianxiang,文件系统,笔记,目录,----,编译,arm
From: https://www.cnblogs.com/gotohome/p/17665160.html

相关文章

  • 前端面试笔记
    css常见的水平居中实现方案flex布局方案<divclass="father"><divclass="son"></div></div>.father{width:100%;height:20%;background-color:red;display:flex;justify-content:center;align-items:center;}......
  • OpenHarmony设备截屏的5种方式
     本文转载自《OpenHarmony设备截屏的5种方式》,作者westinyang 目录● 方式1:系统控制中心● 方式2:OHScrcpy投屏工具 `推荐`● 方式3:DevEcoStudio截屏功能● 方式4:hdc shell snapshot_display● 方式5:hdc shell wukong● 持续关注演示视频:https://www.bil......
  • C#图解教程笔记 - Chapter1 C#和.NET框架
    0摘要CLR,BCL,FCL,DLL,CIL,JIT,CLI,CTS,CLS1在.NET之前20世纪90年代末,使用微软平台的Windows编程分化成许多分支。如:VisualBasic(VB)C或C++其他相关技术:Win32APIMFCCOM所有这些编程技术有一个缺点,就是它们主要针对桌面程序而不是互联网进行开发。......
  • The Riordan Group and Applications笔记
    2022年的一本书,只有376页。证明直接去书里面找。目录1介绍1.1啥是RiordanArray1.2源起和研究动机1.3基础的应用练习参考2系数抽取和生成函数2.1形式幂级数2.2系数抽取2.3拉格朗日反演定理2.4生成函数练习参考3RiordanGroup3.1RiordanArray和RiordanGroup3.2一些特殊......
  • 原来笔记本一直插着电源使用比较好 工作原理3张图秒懂
    热搜内容提到:原来笔记本一直插着电源使用比较好!笔记本电脑在充满电后使用,电源适配器将继续为电脑供电,而充满电的内置电池则不会继续工作,并不会出现一边充电、一边放电的情况。据了解,笔记本电脑里的锂电池没有记忆效应,而且正规厂家生产的锂电池都有相当完善的BMS(电池管理系统),......
  • Leetcode刷题笔记——单调性
    单调性单调性是数学中使用的一种常见性质,通常用于描述函数,在高等数学中的定义常常为:设函数f(x)在区间I上有定义,如果对于I上的任意两个数x1和x2,当x1<x2时,有f(x1)<f(x2)(或者f(x1)>f(x2)),则称函数f(x)在区间I上是单调递增的(或者单调递减的)。例如如下图像就是两个单调函数。利用单......
  • 正则表达式笔记 str.replace+re.sub
    原内容#正则表达式:#(?i)表示接下来的匹配将不区分大小写#.*表示匹配任意字符(除了换行符)零次或多次#(.*)保存捕获的结果,即保存匹配到-h.*之前的全部内容#将字符串元素中(-小写字母)替换为空字符self.df_投料['倒卷前......
  • Karmada 结合 coreDNS 插件实现跨集群统一域名访问
    本文分享自华为云社区《Karmada结合coreDNS插件实现跨集群统一域名访问》,作者:云容器大未来。在多云与混合云越来越成为企业标配的今天,服务的部署和访问往往不在一个K8s集群中。如何做到服务访问与集群无关,成为了各个云服务提供商必须要面对的问题。本文基于Karmadav1.6.1版......
  • 大话数据结构笔记
    1.ADT:AbstractDataType抽象数据类型。2.算法的五个基本特性:输入,输出,有穷性,确定性和可行性。3.大O阶:a.用常数1取代运行时间中的所有加法常数。 b.在修改后的运行次数函数中,只保留最高阶项。c.如果最高阶存在且不是1,则去除与这个项......
  • Programming abstractions in C阅读笔记:p132-p137
    《ProgrammingAbstractionsInC》学习第53天,p132-p137,3.2小节“strings”总结如下:一、技术总结3.2小节介绍了字符串的用法:1.C语言是没有字符串(string)这种数据类型的,但是实际的场景中又很需要这种数据类型,那怎么表示字符串呢?有两种方法:1.用字符数组表示。2.用字符指针表示。......