当前位置:文档之家› redboot移植学习笔记

redboot移植学习笔记

redboot移植学习笔记
redboot移植学习笔记

Redboot移植学习笔记

因为公司的mx27的板子就要出来了,bootloader要上去,linux也要上去,驱动... 最近几乎都在搞redboot,用source insight来阅读redboot真的有点力不从心,很多宏嵌套又嵌套(难道这才是传说中的嵌入式),很多时候跟进去再回过头来你才知道什么叫忘记,而且source insight对AT&T汇编的不支持,又试着用VIM +cscope...

redboot是ecos系统的bootloader,其可移植性很高(相对于U-boot来说),移植难度也不低。移植的主要工作在于硬件抽象层(HAL)的修改,硬件抽象层HAL对处理器结构和系统硬件平台进行抽象,主要包括三大模块——体系结构抽象层(Architecture HAL)、变体抽象层(Variant HAL)和平台抽象层(Platform HAL)。体系结构抽象层---主要是指ECOS所支持的具有不同体系结构的处理器系列,如ARM系列、PowerPC 系列、MIPS系列等等

变体抽象层---指的是处理器系列中某款处理器在Cache、MMU和FPU等方面所具有的特殊性。如

S3C2510属于ARM系列中的ARM940T,在变体抽象层中就会具体地针对ARM940T的Cache等方面作出定义

平台抽象层---则是对当前系统硬件平台的抽象,包括了平台的启动、芯片选择与配置、定时设备、I/O 寄存器访问以及中断寄存器等等

在ecos/packages/hal/arm目录下是平台相关代码,平台抽象层代码是移植的重点

hal_arm_board.cdl---cdl文件使用cdl脚本语言描述该硬件设备(包或平台)的特性和常用指标。cdl文件

实现系统在源码级的功能和指标配置,犹如一个项目管理高层对其仓库中组件特性的登记,只有登记后的包、组件和选项才能被操作系统配置工具识别和配置

以下是MX27的cdl文件钟的几段主要描述:

cdl_package CYGPKG_HAL_ARM_MX27ADS---这是mx27在ecos.db中所登记的包的名字,它下面包含了该板的一些基本设置和组件,如母体体系结构(parent)、包含的头文件、编译的C文件等

cdl_component CYG_HAL_STARTUP---系统启动方式,有3种选择:ram启动、rom启动、romram启动

cdl_component CYGPKG_REDBOOT_HAL_BOARD_OPTIONS ---定义内核ram启动的地址等

在ecos/packages/目录下在ecos.db是关于ECOS系统的一个数据库文件(在packages目录下),它包含了硬

件包管理工具和一些在组件配置库中的包,只有在ecos.db中登记了的包,才能被ECOS的库编译工具(configtool)选中和使用

硬件平台层的一些重要文件:

vectors.S---在target.ld中描述的入口软件,定义了reset_vector、start等各种启动标号

hal_platform_setup.h ——平台启动代码。本文件主要用ARM汇编指令编写,实现平台上电后程序的启动和执行。

plf_io.h ---IO口名称,麻烦事儿

hal_platform_ints.h 中断配置,中断在寄存器中

pkgconf/ ------- 6个存储空间配置文件

hal_diag.c redboot用这些函数和GDB通讯

hal_diag.h 串口打印相关

hal_platform_ints.h 中断配置

......

启动的大概流程:

vectors.S --> reset_vector处开始执行,调用hal_platform_ints.h定义的platform_setup宏来进行一系列的初始化工作,vectors.S里面有LED空宏,我们可以修改来实现启动状态的指示,初始化完后会调用main.c --> cyg_start这时候会显示一些信息。redboot/ecos中没有main函数,C语言入口是从cyg_start开始的

flash分区表的问题:

在redboot中flash分区表是通过fis函数族来实现的,它是建立在MTD驱动之上,引导文件系统的时候要指定文件系统镜像文件所在的BLOCK位置,一般是放在mtdblock2上,在redboot跑起来后,运行fis -list 就可以显示flash分区表的信息。linux下可以自动识别redboot下的flash分区,以块设备的形式在dev目录下表现出来,这是redboot对比Uboot的其中一个很大的区别

LINUX文件系统制作详细

Linux文件系统制作流程 关键词:ARM Linux yaffs文件系统移植 Linux文件系统简介 Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux下的文件系统结构如下: Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。 不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,

SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。 >基于FLASH的文件系统 Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。 闪存主要有NOR和NAND两种技术(简单比较见附录)。Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash 的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。 在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。使用MTD 驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。 顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。 1.jffs2 JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。 Jffs2:日志闪存文件系统版本2(Journalling Flash FileSystem v2) 主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。 目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。 jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在

实验四Linux内核移植实验

合肥学院 嵌入式系统设计实验报告 (2013- 2014第二学期) 专业: 实验项目:实验四 Linux内核移植实验 实验时间: 2014 年 5 月 12 实验成员: _____ 指导老师:干开峰 电子信息与电气工程系 2014年4月制

一、实验目的 1、熟悉嵌入式Linux的内核相关代码分布情况。 2、掌握Linux内核移植过程。 3、学会编译和测试Linux内核。 二、实验内容 本实验了解Linux2.6.32代码结构,基于S3C2440处理器,完成Linux2.6.32内核移植,并完成编译和在目标开发板上测试通过。 三、实验步骤 1、使用光盘自带源码默认配置Linux内核 ⑴在光盘linux文件夹中找到linux-2.6.32.2-mini2440.tar.gz源码文件。 输入命令:#tar –jxvf linux-2.6.32.2-mini2440-20110413.tar对其进行解压。 ⑵执行以下命令来使用缺省配置文件config_x35 输入命令#cp config_mini2440_x35 .config;(注意:x35后面有个空格,然后有个“.”开头的 config ) 然后执行“make menuconfig”命令,但是会出现出现缺少ncurses libraries的错误,如下图所示: 解决办法:输入sudo apt-get install libncurses5-dev 命令进行在线安装ncurses libraries服务。

安装好之后在make menuconfig一下就会出现如下图所示。 ⑶配置内核界面,不用做任何更改,在主菜单里选择退出,并选“Yes”保存设置返回到刚命令行界面,生成相应配置的头文件。 编译内核: #make clean #make zImage 在执行#make zImage命令时会出现如下错误: 错误:arch/arm/mach-s3c2440/mach-mini2440.c:156: error: unknown field 'sets' specified in initializer 通过网上查找资料 于是在自己的mach-mini2440.c中加入 #include

文件系统移植

嵌入式linux内核上文件系统的移植 实验目的:在已经能运行的内核上架构文件系统 其实,虽然 root_qtopia 这个文件系统的GUI 是基于Qtopia 的,但其初始化启动过程 却是由大部分由busybox 完成,Qtopia(qpe)只是在启动的最后阶段被开启。由于默认的内核命令行上有 init=/linuxrc, 因此,在文件系统被挂载后,运行的第一个程 序是根目录下的linuxrc。这是一个指向/bin/busybox 的链接,也就是说,系统起来后运行的 第一个程序也就是busybox 本身。 这种情况下,busybox 首先将试图解析/etc/inittab 来获取进一步的初始化配置信息(参 考busybox 源代码init/init.c 中的parse_inittab()函数)。而事实上,root_qtopia 中并没有/et c/inittab 这个配置文件,根据busybox 的逻辑,它将生成默认的配置 实验过程: 一、获取yaffs2源代码 现在大部分开发板都可以支持 yaffs2 文件系统,它是专门针对嵌入式设备,特别是使用nand flash 作为存储器的嵌入式设备而创建的一种 文件系统,早先的yaffs 仅支持小页(512byte/page)的nand flash,现 在的开发板大都配备了更大容量的nand flash,它们一般是大页模式 (2K/page),使用yaffs2 就可以支持大页的nand flash,下面是yaffs2 的移植详细步骤。 在https://www.doczj.com/doc/2a13277237.html,/node/346 可以下载到最新的yaffs2 源代码,需要使用git工具( 安装方法见本手册第一章),在命令行输入:#git clone git://https://www.doczj.com/doc/2a13277237.html,/yaffs2 稍等片刻,就可以下载到最新的yaffs2 的源代码目录,本光盘中也有单独的yaffs2 源代码包( 文件名为:yaffs2-src-20100329.tar.gz)

常用的注册表项目编辑

二、桌面外观的修改实例 1.全面定制“开始”菜单中的图标(适用范围:Windows 9x/Me/NT/2000/XP) “开始”菜单是用户最常使用的,它里面有“程序”、“文档”、“设置”、“搜索”、“帮助”、“运行”和“关机”等几项图标,我们可以通过修改注册表来加以改变。 首先运行注册表编辑器,进入到注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ Explorer\Shell Icons。如果该注册表项不存在,则创建它。 在该注册表项下创建如下表中罗列的字符串类型的值项,并且修改它们的值为新的图标。(如图表) 重新启动计算机,“开始”菜单中的图标就全部换成了新的图标。 提示:图标可以直接使用可执行文件中的图标。例如“explorer.exe,3”,表示使用explorer.exe文件中的第4个图标。 2.增加和删除“开始”菜单中的项目 一般情况下,“开始”菜单中有“程序”、“文档”、“设置”、“搜索”、“帮助”、“运行”和“关机”这几项。通过修改注册表,我们可以将一些不常用的项

从“开始”菜单中删除。如果有特殊的目的,例如网吧中的计算机可能不想让使用者使用“开始”菜单中的“控制面板”来随意改变计算机的设置,也可以使用此方法。 下表中的值项,都位于注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Policies\Explorer中。(如图表) 3.增加和删除桌面的固定项目(适用范围:Windows 9x/Me/NT/2000/XP)一般情况下,桌面上都有“我的电脑”、“网上邻居”、“回收站”、“我的文档”等。通过修改注册表,我们可以不让这些项目显示在桌面上。这对于不希望使用者胡乱操作的场合是有用处的。例如对于网吧中的计算机,就可以将全部的桌面项目隐藏起来,以防止使用者通过“我的电脑”

根文件系统移植

实验五根文件系统移植 实验目的: 通过本次实验,使大家学会根文件系统移植的具体步骤,并对根文件系统有更近一步的感官认识。让同学理解由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。 实验硬件条件: 1、实验PC机一台,TINY6410开发板一台 2、电源线,串口线,数据线。 实验软件条件: 1、VMware Workstation, 2、Ubuntu10.04 3、mktools-20110720.tar.gz 4、busybox-1.13.3-mini2440.tgz, 5、SecureCRT以及dnw烧写工具 实验步骤: 一、实验步骤 1.进入rootfs目录,查看压缩文件,具体操作指令如下:

2.发现有两个压缩文件夹,分别进行解压: 3.tar xvzf busybox-1.13.3-mini2440.tgz, 4.tar xvzf mktools-20110720.tar.gz,解压完成后, 5.查看文件夹#ls

二、实验步骤 1.修改架构,编译器#cd busybox-1.13.3/ 2.进入后查看#ls 3.#gedit Makefile 4.修改 164行 CROSS_COMPILE ?=arm-linux- 5.修改190行 ARCH ?= arm 6.保存后,退出!

三、实验步骤 1.修改配置 #make menuconfig 2.若出现如下提示

3.需调整到最大化。

4.把Busybox Settings -----→>Build Option ------→> Build BusyBox as astatic binary (no shared libs) 选择上,其他的默认即可。 然后一直退出,保存即可 5.接着执行 make接着执行 make install 6.最终生成的文件在_install 中 #cd _install

注册表脚本编程入门

注册表脚本编程入门 本小时我们将对注册表脚本文件进行比较深入的学习。注册表脚本文件——即.reg文件的重要性不仅在于可以用于备份注册表设置,还可以用来改变注册表设置而无需打开注册表编辑器,这在解决某些问题时具有独特的优势和便利性。 注册表脚本是什么? 在计算机日常维护中,为了防患于未然,我们需要对注册表进行导出备份;在导出时选择文件保存类型时会看到*.Reg文件,如图22-1所示,这个文件就是注册表脚本文件的格式。 图22-1导出注册表文件图22-2通过快捷菜单编辑 该.Reg文件可以通过记事本或其它文本编辑器打开并进行编辑,比如右击某个.Reg文件,在右键菜单中会出现图22-2所示的菜单。 在右键快捷菜单中,选择“编辑”命令就可以打开默认的脚本编辑软件(在Windows中都是记事本)来对脚本进行编辑,当然我们也可以选择其它的文本编辑软件来进行脚本编辑,不过需要在“资源管理器”的“工具→文件夹选项”来设置。打开“文件夹选项”窗口,选择“文件类型”选项,在其中找到“REG 注册表项”,再单击“高级”按钮,进入图22-3所示的窗口。 图22-3修改REG文件默认设置项目图22-4编辑REG文件类型的操作 双击“edit”或选择“编辑”按钮就可以对打开该文件对应的应用程序进行修改,我们可以通过“浏览”按钮来选择其它关联应用程序,如图22-4所示,比如用于编辑.Reg文件默认的是程序(记事本),这里我们就可以在“用于执行操作的应用程序”中更改。 当注册表或系统出现问题的时候,就可以通过注册表的导入功能将.Reg文件导入注册表,这样可以实现恢复注册表的目的。或者,直接运行.Reg文件安装到注册表中去,之后会弹出安装提示框,如图22-5所示,选择“是”按钮就可以将这些内容添加到注册表中。 图22-5安装.Reg文件 说了这么多,那么到底什么是注册表脚本呢?其实就是上面我们反复提到的.Reg文件,简单地讲,注册表脚本就是以.Reg为扩展名的可以对注册表进行操作的脚本文件。我们可以利用该.Reg文件直接对注册表进行各种修改操作,而且对注册表的操作不会受到注册表编辑器被锁定或禁用的限制。 如何编写注册表脚本? 首先我们得了解一下注册表文件的格式,跟其它一些脚本语言一样,注册表脚本在编写的时候需要遵循一定的格式,如果格式不正确,在使用这些脚本的时候会出现一些意想不到的问题。要遵循的格式是指我们在修改或自己创建一个注册表脚本文件的时候应该注意的问题。当然如果是用注册表编辑器(Regedit)导出的.Reg脚本文件是没有任何格式问题的。 下面让我们来看一段注册表脚本文件: ----------------------------------------------------------- REGEDIT4 ;一个注册表脚本文件 [HKEY_LOCAL_MACHINE\SOFTWARE\ACD Systems\ACDSee\50] @="默认值" "CompanyID"="" "LicenseNumber"="581 076 451 038 881 441" "UserName"="User007" ----------------------------------------------------------- 在上面的脚本文件中, 第一行的“REGEDIT4”是用来标明注册表脚本文件的文件格式类型,是必须的部分,该格式可以广泛应用于Windows 9X/.NT4/2000/XP中;另外有一种名为“Windows Registry Editor Version 5.00”的文件格式,它仅被用于Windows 2000和Windows XP中。这里建议大家使用REGEDIT4格式。在REGEDIT4之后的部分就是注册表脚本文件的正文部分。

FATFS文件系统移植和应用

FATFS文件系统的移植 作者:LJ 时间:2010年11月12日 随着信息技术的发展,目前常用文件系统主要有微软的FAT12、FAT16、FAT32、NTES文件系统,以及Linux系统的EXT2、EXT3等。由于Windows操作系统的广泛应用,当前很多嵌入式产品中用的最多的还是FAT文件系统。所以,选择一款容易移植和使用,并且占用资源少而功能全面的文件系统就显得非常重要了。 FATFS文件系统是一个完全免费且开源的FAT文件系统模块,由小日本工程师编写,它支持FAT12、FAT16和FAT32文件系统,专门为小型的嵌入式系统而设计。模块用标准的C语言编写,可以很容易地移植到各种硬件平台。 在“驱动程序”文件夹中有一个“FatFs R0.07c”文件夹,这是官方提供的FATFS文件系统的源码和文档,版本为R0.07c。打开“doc”文件夹下的“00index_e.html”英文网页文档,里面有FATFS文件系统的全部API函数说明,相对应的应用实例和如何编写硬件接口程序的说明。如果您的英文不怎么好,建议您先装一个有道词典,使用屏幕取词功能,能帮助我们阅读和理解。“00index_j.html”则是日文版的网页,毕竟是小日本写的。“src”文件夹存放有FATFS文件系统源码,下面是该文件夹下各个文件或文件夹存放的内容说明:“ff.h”文件:FATFS文件系统的配置和API函数声明; “ff.c”文件:FATFS源码;

“diskio.h”文件:FATFS与存储设备接口函数的声明; “diskio.c”文件:FATFS与存储设备接口函数; “integer.h”文件:FATFS用到的所有变量类型的定义; “option”文件夹:存放一些外接函数,下一实例有实际的讲解; “00readme.txt”文件:FATFS版本及相关信息说明; 编译工程,没有通过,根据编译信息提示在“diskio.c”文件中在几个函数没有定义。这很正常,因为我们还没有编写文件系统与存储设备的接口函数。下面来分析“diskio.c”文件中各个函数的功能:“DSTATUS disk_initialize ( BYTE drv )”是存储媒介的初始化函数,由于我们使用的是SD卡,所以实际上是对SD卡的初始化; “DSTATUS disk_status ( BYTE drv )”状态检测函数,检测是否支持当前的存储设备,支持返回0; “DRESULT disk_read (BYTE drv, BYTE *buff, DWORD sector, BYTE count)”是读扇区函数,drv是要读扇区的存储媒介号,*buff 存储读取的数据,sector是读数据的开始扇区,count是要读的扇区数。在SD卡的驱动程序中,分别提供了读一个扇区和读多个扇区的函数。当count == 1时,用读一个扇区函数;当 count > 1时,用读多个扇区的函数,这样提高了文件系统读效率。操作成功返回0。 “DRESULT disk_write(BYTE drv, BYTE *buff, DWORD sector, BYTE count)”写扇区函数,drv是要写扇区的存储媒介号,*buff存储写入的数据,sector是写开始扇区,count是要写的扇区数。同样在SD卡的驱动程序中,分别提供了写一个扇区和写多个扇区的函数。

智能计算平台应用开发(初级)-实验手册-应用软件移植方案实践实验手册-学员用书

应用软件移植方案实践 实验手册 学员用书

目录 1 参考资料及工具 (1) 1.1 参考资料及工具 (1) 2 应用软件移植方案实践 (2) 2.1 课程介绍 (2) 2.2 教学目标 (2) 2.3 案例背景 (2) 2.4 任务 (3) 演练场景1:需求分析 (3) 演练场景2:实施准备 (4) 演练场景3:方案实施 (5) 演练场景4:方案验收 (6) 2.5 评分表 (7)

1 参考资料及工具 1.1 参考资料及工具 文档中所列出的命令以及参考文档,请根据实际环境中的不同产品版本使用对应的命令以及文档。 参考文档: 1. 华为鲲鹏代码迁移工具用户指南 路径:华为云> 鲲鹏社区> 鲲鹏文档> 编译器和工具链> 开发工具 2. 华为鲲鹏分析扫描工具用户指南 路径:华为云> 鲲鹏社区> 鲲鹏文档> 编译器和工具链> 开发工具 3. Nginx软件安装指南 路径:华为云> 鲲鹏社区> 鲲鹏文档> 软件安装指南 4. PHP软件安装指南 路径:华为云> 鲲鹏社区> 鲲鹏文档> 软件安装指南

2 应用软件移植方案实践 2.1 课程介绍 【开发者设计提供引导员的开场白,为新老师提供便利,以下是作为参考】 本章的内容主要为应用软件从x86计算平台向鲲鹏计算平台的迁移实践指导。 2.2 教学目标 ●能完成应用迁移项目的需求分析; ●能完成应用迁移项目的实施准备; ●能完成应用迁移项目的方案实施; ●能完成应用迁移项目的方案验收。 2.3 案例背景 说明:本文所涉及的案例仅为样例,实际操作中请以真实设备环境为准,具体配置步骤请参考对应的产品文档。 在这个数字时代,银行业务面临转型与重塑,为此银行应当实施数字化战略,通过构建有力的支撑体系及IT能力助力数字化转型,从而保持在金融行业的领先地位。 为更好的推进H银行的数字化转型,企业决定将现有的业务平台迁移至华为鲲鹏计算平台,为异构计算、大数据分析等新兴业务提供更好的算力支撑。 假设您是本次项目技术负责人工程师A,需要完成如下任务: ●需求分析; ●实施准备; ●方案实施; ●方案验收。 说明:本手册涉及的操作物理环境下与云环境下均适用,故在此不作区分。

petit_fatfs文件系统移植

FatFS文件系统的优点我就不赘述了,我需要的功能不多,所以我移植是FatFS的精简版petit fatfs,现将我的一直步骤写下来供大家参考。工程暂不能分享,见谅。 1、移植的文件系统为petit fatfs R0.02。 下载地址:https://www.doczj.com/doc/2a13277237.html,/fsw/ff/pff2.zip 2、本人选用的单片机是STC12C5A56S2(容量够大)。 3、选用的SD卡为macro SD,容量512M,格式化为fat32文件系统,分配大小为512字节。 Petit fatfs文件系统的修改步骤及说明如下: 一、integer.h,pff.c,diskio.h这三个文件不需要修改。 二、pff.h的修改: 1、使能FAT32文件系统的支持#define_FS_FAT321 2、选择简体中文编码格式#define_CODE_PAGE936 三、diskio.c的修改: 1、添加必要头文件:reg51.h,sd.h,spi.h。 2、填写设备初始化函数DSTATUS disk_initialize(void) 这个函数我是参考别人写的: DSTATUS disk_initialize(void) { DSTATUS stat; //Put your code here stat=STA_NOINIT; if(!SD_Init()) { stat&=~STA_NOINIT; } return stat; } 3、填写读函数:DRESULT disk_readp(BYTE*dest,DWORD sector,WORD sofs,WORD count) 这个函数写法各异,就不具体说了, BYTE*dest这个就是指你要讲读出来的数据存在哪里的指针变量。 DWORD sector是要读扇区的地址,看一下SD卡的读写命令你就知道了。 WORD sofs是偏移量,简单就是说,要读的数据相对于扇区开始的字节数,这个读出来,直接忽略掉。 WORD count是要读的字节个数,读完偏移量的字节数,就是要读这个,将读出来的数据存在干才说的那个BYTE*dest。 最后还有一个剩余字节数即(512-sofs-count),这个也不是需要的数据,读出来忽略掉就行了。 4、我做的东西不需要向SD写入,所以disk_writep就没有动。 具体操作,以及在主函数中的调用可参考https://www.doczj.com/doc/2a13277237.html,/tlptotop/blog/item/21c30b2ae0c9a4f5e7cd40de.html

华为常用实验手册范本

目录 实验一以太网交换机基本配置 (1) 实验二以太网端口配置实验 (7) 实验三利用TFTP管理交换机配置 (13) 实验四虚拟局域网VLAN (16) 实验五生成树配置 (25) 实验六802.1x和AAA配置 (38) 实验七路由器基本配置 (45) 实验八PPP配置 (51) 实验九FR配置 (56) 实验十静态路由协议配置 (64) 实验十一RIP协议配置 (68) 实验十二OSPF协议配置 (74) 实验十三访问控制列表配置 (88) 实验十四地址转换配置 (95) 实验十五DHCP配置 (101) 实验十六升级路由器或交换机的操作系统 (116)

实验一以太网交换机基本配置 【实验目的】 掌握以太网交换机基本配置 【实验学时】 建议2学时 【实验原理】 一、交换机常用命令配置模式 1 业务描述 (1)Quidway系列产品的系统命令采用分级保护方式,命令被划分为参观级、监控级、配 置级、管理级4个级别,简介如下: ?参观级:网络诊断工具命令(ping、tracert)、从本设备出发访问外部设备的命 令(包括:Telnet客户端、RLogin)等,该级别命令不允许进行配置文件保存的 操作。 ?监控级:用于系统维护、业务故障诊断等,包括display、debugging命令,该 级别命令不允许进行配置文件保存的操作。 ?配置级:业务配置命令,包括路由、各个网络层次的命令,这些用于向用户提供 直接网络服务。 ?管理级:关系到系统基本运行,系统支撑模块的命令,这些命令对业务提供支撑 作用,包括文件系统、FTP、TFTP、XModem下载、配置文件切换命令、电源 控制命令、备板控制命令、用户管理命令、命令级别设置命令、系统部参数设置 命令等。 (2)命令视图: 系统将命令行接口划分为若干个命令视图,系统的所有命令都注册在某个(或某些)命令视图下,只有在相应的视图下才能执行该视图下的命令: 各命令视图的功能特性、进入各视图的命令等的细则: ◆命令视图功能特性列表

注册表教程完整版之第二部份注册表桌面修改实例

第二部份注册表桌面修改实例、 (2) 一、让心爱的壁纸永驻桌面 (2) 二、更改桌面背景(Windows 9x/Me/2000/xp) (3) 三、自定义桌面壁纸的位置 (4) 四、更改登录时的背景图案(Windows NT/2000) (4) 五、改变登录时的背景色 (5) 六、在桌面上显示Windows版本号 (5) 七、禁止活动桌面 (6) 八、使用96位真彩色(Windows 9x/Me) (6) 九、隐藏桌面所有图标 (6) 十、让图标的色彩更鲜艳 (7) 十一、桌面图标刷新 (7) 十二、设置图标之间的垂直间距(windows NT/2000) (7) 十三、改变桌面图标大小 (8) 十四、删除快捷方式图标中的小箭头 (8) 十五、创建没有“快捷方式”字样的快捷键 (9) 十六、把快捷方式中的小箭头改为其他图标 (9) 十七、换个金属公文包(Windows 98/Me) (10) 十八、为“我的电脑”改名 (10) 十九、为“我的电脑”改图标 (10) 二十、修改“我的电脑”的提示信息 (11) 二十一、为“回收站”改名(Windows 98) (11) 二十二、误删除系统项目图标的恢复 (11) 二十三、让窗口自动刷新 (12) 二十四、自动切换当前窗口 (12)

二十五、设置窗口的缩放控制 (13) 二十六、改变窗口变化时的动感效果 (13) 二十七、更改窗口标题栏的高度与宽度 (13) 二十八、更改窗口菜单栏的大小 (14) 二十九、修改窗口滚动条的大小 (14) 三十、锁定任务栏的大小和位置(Windows xp) (15) 三十一、将相似的任务栏按钮集中到一起 (15) 三十二、把任务栏上的时间变成中文显示 (15) 三十三、打造个性化的任务栏时间显示 (16) 三十四、在任务栏显示标准格式时间(Win 98/Me/Nt/2000/xp) (17) 三十五、去除工具栏提示文字 (18) 三十六、在“我的电脑”中显示“打印机” (18) 三十七、在“我的电脑”中显示“计划任务” (18) 三十八、隐藏“我的电脑”中的驱动器(Win 98/Me/Nt/2000/xp) (19) 三十九、修改缩略图大小(Windows xp) (19) 四十、更改软驱、光驱、文件夹图标(Windows 98) (20) 四十一、删除共享资源的手形图标 (20) 四十二、更改打印机图标(Windows 98/Me/Nt/2000) (20) 四十三、更改IE的图标 (21) 第二部份注册表桌面修改实例、 一、让心爱的壁纸永驻桌面 当用户设置了自己心爱的墙纸后,最不愿意看到和最头疼的就是其他使用者会更换墙纸,其实可以通过修改注册表来实现禁止更换的功能。

在STM32中移植FATFS文件系统

STM32的FATFS文件系统移植笔记 一、序言 经常在网上、群里看到很多人问关于STM32的FATFS文件系统移植的问题,刚好自己最近也在调试这个程序,为了让大家少走弯路,我把我的调试过程和方法也贡献给大家。 二、FATFS简介 FatFs Module是一种完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列单片机上而只需做简单的修改。它支持FATl2、FATl6和FAT32,支持多个存储媒介;有独立的缓冲区,可以对多个文件进行读/写,并特别对8位单片机和16位单片机做了优化。 三、移植准备 1、FATFS源代码的获取,可以到官网下载:https://www.doczj.com/doc/2a13277237.html,/fsw/ff/00index_e.html最新版本是R0.09版本,我们就移植这个版本的。 2、解压文件会得到两个文件夹,一个是doc文件夹,这里是FATFS的一些使用文档和说明,以后在文件编程的时候可以查看该文档。另一个是src文件夹,里面就是我们所要的源文件。 3、建立一个STM32的工程,为方便调试,我们应重载printf()底层函数实现串口打印输出。可以参考已经建立好的printf()打印输出工程:.viewtool./bbs/foru ... d=77&extra=page%3D1 四、开始移植 1、在已经建立好的工程目录User文件夹下新建两个文件夹,FATFS_V0.09和 SPI_SD_Card,FATFS_V0.09用于存放FATFS源文件,SPI_SD_Card用于存放SPI的驱动文件。 2、如图1将ff.c添加到工程文件夹中,并新建diskio.c文件,在diskio.c文件中实现五个函数: 1.DSTATUS disk_initialize (BYTE);//SD卡的初始化 2. DSTATUS disk_status (BYTE);//获取SD卡的状态,这里可以不用管 3. DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);//从SD卡读取数据 4. DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);//将数据写入 SD卡,若该文件系统为只读文件系统则不用实现该函数 5. DRESULT disk_ioctl (BYTE, BYTE, void*);//获取SD卡文件系统相关信息 6. 复制代码

H3C-系统实验手册

2016年南通市地税系统实验手册 目录 实验一:通过Telnet方式登录交换机典型配置举例 (2) 实验二:基于端口的VLAN典型配置举例 (3) 实验三:802.1X认证配置举例 (4) 实验四:网络地址转换配置举例 (6) 实验五:DHCP配置举例 (9) 实验六:静态路由 (10) 实验七:配置OSPF基本功能 (11)

实验一:通过Telnet方式登录交换机典型配置举例 组网图 配置步骤 (1)配置Device接口地址 #配置接口GigabitEthernet0/0地址为192.168.100.230/24。 system [Sysname] interface GigabitEthernet 0/0 [Sysname-GigabitEthernet0/0] ip address 192.168.100.230 24 [Sysname-GigabitEthernet0/0] quit (2)配置认证 #设置VTY的认证模式为scheme。 [Sysname] line vty 0 15 [Sysname-line-vty0-15] authentication-mode scheme [Sysname-line-vty0-15] quit #创建设备管理类本地用户admin。 [Sysname] local-user admin #指定本地用户的授权用户角色为network-admin [Sysname-luser-manage-admin] authorization-attribute user-role network-admin #配置该本地用户的服务类型为Telnet。 [Sysname-luser-manage-admin] service-type telnet #配置该本地用户密码为密文admin。 [Sysname-luser-manage-admin] password simple admin [Sysname-luser-manage-admin] quit (3)开启Telnet服务 [Sysname] telnet server enable

嵌入式linux下的文件系统

嵌入式linux下常见的文件系统RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 ?RamFS:利用VFS自身结构而形成的内存文件系 统,使用系统的RAM空间 ?JFFS/JFFS2:为Flash设计的日志文件系统?Yaffs:专门为Nand Flash设计 ?proc:为内核和内核模块将信息发送给进程提 供一种机制,可以查看系统模块装载的信息?devFS:设备文件系统 Linux上的Ext2fs ?支持4 TB 存储、文件名称最长1012 字符 ?可选择逻辑块 ?快速符号链接 ?Ext2不适合flash设备 ?是为象IDE 设备那样的块设备设计的,逻辑块大小必 须是512 byte、1 KB、2KB等 ?没有提供对基于扇区的擦除/写操作的良好管理 ?如果在一个扇区中擦除单个字节,必须将整个扇区复制到RAM,然后擦除,再重写入

?在出现电源故障时,Ext2fs 是不能防止崩溃的 ?文件系统不支持损耗平衡,缩短了flash的寿命 jffs/jffs2文件系统的优缺点 ?日志文件系统 ?提供了更好的崩溃、掉电安全保护 ?jffs2支持对flash的均匀磨损 ?在扇区级别上执行闪存擦除/写/读操作要 比Ext2文件系统好 ?文件系统接近满时,JFFS2 会大大放慢运行 速度——垃圾收集 Nand上yaffs文件系统的优势 ?专门为Nand flash设计的日志文件系统 ?jffs/jffs2不适合大容量的Nand flash ?jffs的日志通过jffs_node建立在RAM中,占用RAM空间:对于128MB的Nand大概需要4MB的空间来维护节点 ?启动的时候需要扫描日志节点,不适合大容量 的Nand flash ?FAT系统没有日志 编译yaffs文件系统 ?mtd的最新补丁升级? ?接口更新,适合与yaffs

基于STM32的FATS文件系统移植全教程

一、移植目的 1、结合命令界面的改进,实现文件系统与命令界面的结合使用。 2、在命令界面中实现以下文件系统操作命令:flist-列出当前目录下的文件;f mkdir-在当前目录下创建目录;fchgdir-改变当前目录;fread-读取文件内容;fwrite-新建文件并写入。 二、移植条件 1、可以识别参数的串口命令界面。 2、FatFS007e版本。 三、对命令界面所实现功能的描述 1、超级终端设置。 首先打开串口终端,设置波特率115200,8位数据,无奇偶校验,无流控,终端仿真选择ANSIW,asicc码设置为以换行符结尾(以前设置的,原因已经忘了),反正这样设置了能够正常工作。 开发板复位后,终端显示:**********nthq2004 编写的简单命令接口!***** **** Sh> 然后可以在这里输入命令执行。比如现在支持的命令包括:"help","cls","ledon","ledoff","time","temp","i2cwr","i2crd","sdrd","sdwr",共10个命令。比如输入help me命令,则会显示命令界面当前支持的所有命令,并显示当前所有输入的命令参数。所以命令执行过程的分析以help me为例,help是命令,me是参数。 2、串口终端命令输入过程

在串口终端输入一个字符时,其工作工程为: void USART1_IRQHandler(void){ //该函数在文件stm32f10x_it.c中OS_CPU_SR cpu_sr; OS_ENTER_CRITICAL(); OSIntNesting++; //中断嵌套计数 OS_EXIT_CRITICAL(); if ( USART_GetITStatus ( USART1, USART_IT_RXNE )!= RESET) { Uart_ReceiveChar(); //串口接收字符} OSIntExit(); //这里可以触发任务切换软中断 } 串口接收到字符引起终端、然后调用函数Uart_ReceiveChar()获取字符并放入串口消息队列, void Uart_ReceiveChar (void) { //该函数在文件uart.c中 u32 RecChar; RecChar = (u32)(USART1->DR & 0xFF); OSQPost ( UartMsgOSQ, ( void* )RecChar );//将字符指针化放入消息队列,这里接用了周慈航教授书中的方法。} 在task_uartcmd.c文件创建的串口界面任务中, case UartStateInput: //如果出于输入状态 { UartCharIn=Uart_GetChar(); //读取输入按键 UartCharIn &= 0x7F;

《计算机控制系统》实验手册

《计算机控制系统》实验手册 上海海事大学电气自动化系施伟锋 上海海事大学电气自动化实验中心李妮娜 目录 1《计算机控制系统》实验指导(Matlab版) (2) 实验一数字PID参数的整定 (3) 实验二Smith算法的运用..........................................5实验三二阶对象数字控制系统设计..............................7实验四达林控制算法的运用 (9) 2 《计算机控制系统》实验指导(DSP版) (11) 实验一实验系统介绍与CCS软件使用入门 (11) 实验二数字I/O实验—交通灯实验 (26) 实验三PWM输出实验1——直流电机控制实验 (30) 3 《计算机控制系统》课程设计指导(Matlab版)………33 4 《计算机控制系统》课程设计指导(DSP版) (35) 5 《计算机控制系统》课程设计报告或小论文格式 (40)

《计算机控制系统》实验指导 (Matlab 版) 一、实验课程教学目的与任务 通过实验设计或计算机仿真设计,使学生了解和掌握数字PID控制算法的特点、了解系统PID参数整定和数字控制系统的直接设计的基本方法,了解不同的控制算法对被控对象的控制特性,加深对计算机控制系统理论的认识,掌握计算机控制系统的整定技术,对系统整体设计有一个初步的了解。 根据各个实验项目,完成实验报告(用实验报告专用纸)。 二、实验要求 学生在熟悉PC机的基础上,熟悉MATLAB软件的操作,熟悉Simuli nk工具箱的软件编程。通过编程完成系统的设计与仿真实验,逐步学习控制系统的设计,学习控制系统方案的评估与系统指标评估的方法。 计算机控制系统主要技术指标和要求: 根据被控对象的特性,从自动控制系统的静态和动态质量指标要求出发对调节器进行系统设计,整体上要求系统必须有良好的稳定性、准确性和快速性。一般要求系统在振荡2~3次左右进入稳定;系统静差小于3%~5%的稳定值(或系统的静态误差足够小);系统超调量小于30%~50%的稳定值;动态过渡过程时间在3~5倍的被控对象时间常数值。 系统整定的一般原则: 将比例度置于交大值,使系统稳定运行。根据要求,逐渐减小比例度,使系统的衰减比趋向于4:1或10:1。若要改善系统的静态特性,要使系统的静差为零,加入积分环节,积分时间由大向小进行调节。若要改善系统的动态特性,增加系统的灵敏度,克服被控对象的惯性,可以加入微分环节,微分时间由小到大进行调节。PID控制的三个特性参数在调节时会产生相互的影响,整定时必需综合考虑。系统的整定过程是一个反复进行的过程,需反复进行。

基于STM32的FATS文件系统移植全过程

FAT移植的好文档 一、移植目的 1、结合命令界面的改进,实现文件系统与命令界面的结合使用。 2、在命令界面中实现以下文件系统操作命令:flist-列出当前目录下的文件;f mkdir-在当前目录下创建目录;fchgdir-改变当前目录;fread-读取文件内容;fwrite-新建文件并写入。 二、移植条件 1、可以识别参数的串口命令界面。 2、FatFS007e版本。 三、对命令界面所实现功能的描述 1、超级终端设置。 首先打开串口终端,设置波特率115200,8位数据,无奇偶校验,无流控,终端仿真选择ANSIW,asicc码设置为以换行符结尾(以前设置的,原因已经忘了),反正这样设置了能够正常工作。 开发板复位后,终端显示:**********nthq2004 编写的简单命令接口!**** ***** Sh> 然后可以在这里输入命令执行。比如现在支持的命令包括:"he lp","cls","ledon","ledoff","time","temp","i2cwr","i2crd","sdrd","sdwr ",共10个命令。比如输入help me命令,则会显示命令界面当前支持的所有命令,并显示当前所有输入的命令参数。所以命令执行过程的分析以help me为例,help是命令,me是参数。 2、串口终端命令输入过程 在串口终端输入一个字符时,其工作工程为: void USART1_IRQHandler(void){ //该函数在文件stm32f10x_it.c中 OS_CPU_SR cpu_sr; OS_ENTER_CRITICAL(); OSIntNesting++; //中断嵌套计数 OS_EXIT_CRITICAL(); if ( USART_GetITStatus ( USART1, USART_IT_RXNE )!= RESET ) { Uart_ReceiveChar(); //串口接收字符 } OSIntExit(); //这里可以触发任务切换软中断 } 串口接收到字符引起终端、然后调用函数Uart_ReceiveChar()获取字符并放入串口消息队列, void Uart_ReceiveChar (void) { //该函数在文件uart.c中 u32 RecChar;

相关主题
文本预览
相关文档 最新文档