当前位置:文档之家› SPP基础库源码分析

SPP基础库源码分析

SPP基础库源码分析
SPP基础库源码分析

SPP 基础库源码分析

一、原子操作基础库

在tbase文件夹下,包括以下源码文件,各文件的用途如下

atomic.h:通过__GNUC__和__WORDSIZE宏判断当前编译环境引入的具体原子操作头文件

atomic_asm.h:当编译环境为linux gcc版本小于4.0时被引入,

atomic_gcc.h: 当编译环境为linux gcc版本大于4.0时被引入,

atomic_asm8.h: 原用于32位系统时引入,现被注释了

atomic_gcc8.h: 当编译环境系统为64位时被引入

myatomic_gcc8.h: 当编译环境系统为64位时被引入

以上几个文件都是封装了glibc库中的cdefs.h的原子操作函数和相关的数据结构,以更简洁的名称提供给SPP各处代码使用。

注解:预定义__GNUC__宏

1 __GNUC__ 是linux平台,gcc编译器编译代码时预定义的一个宏。需要针对gcc编写代码时,可以使用该宏进行条件编译。

2 __GNUC__ 的值表示gcc的版本。需要针对gcc特定版本编写代码时,也可以使用该宏进行条件编译。

3 __GNUC__ 的类型是“int”,该宏被扩展后,得到的是整数字面值。可以通过仅预处理,查看宏扩展后的文本。

预定义__WORDSIZE宏,用于判断系统为32位还是64位

二、链表基础库

list.h:定义和实现链表的数据结构及相关操作

三、日志基础库

在tbase文件夹下,包括以下源码文件,各文件的用途如下

tlog.h:定义了日志功能所需的宏、枚举结构及日记类CTLog

详细源码分析:

首先保障多进程和多线程时的文件句柄安全性问题

定义了日志文件打印相关的多个宏

在tbase的名字空间下,定义tlog名字空间。

以下定义都在tbase::tlog名字空间下

定义枚举类型LOG_TYPE,LOG_LEVEL

定义钩子函数原型

定义日志类CTLog,CTLog的主要公共接口如下:

//初始化日志

int log_open(int log_level, int log_type, const char* log_path, const char* name_prefix, int max_file_size, int max_file_no);

//设置日志级别

int log_level(int level);

//打印格式化日志

void log_i(int flag, int log_level, const char *fmt, ...);

void log_i_va(int flag, int log_level, const char* fmt, va_list va);

//打印bin日志

void log_i_bin(int log_level, const char* buf, int len);

//设置钩子函数

void log_set_hook(log_hook hook);

//把二进制数据转换为可显示的hex字符串

static const char* to_hex(const char* bin, int len, char* buf, int size);

定义用户使用应该调用跟函数对应的宏

tlog.cpp:具体实现CTLog类的各个函数

四、统计基础库

在tbase文件夹下,包括以下源码文件,各文件的用途如下tstat.h:定义

1)各种统计操作宏,

2)各种统计相关数值宏,

3)各种错误码定义

4)统计对象结构体TStatObj

5)统计对象池TStatPool

6)统计池类CTStat

tstat_policy.h 定义

1)原子数统计操作宏

2)外部可见的统计对象数据结构TStatObjWrapper

3)统计策略类CTStatPolicy(被CTStat类使用)

tstat.cpp:实现统计池类CTStat

五、共享内存基础库

在tbase文件夹下,包括以下源码文件,各文件的用途如下hex_dump.h:声明了两个文件倒成16进制数据的函数接口tshmcommu.h:作了以下的一些定义:

锁的类型宏;

错误码宏:

共享内存管道统计结构体TMQStat,Q_STATINFO

共享内存管道类CShmMQ:

共享内存生产者类(不带锁)CShmProducer:

共享内存生产者类(带锁)CShmProducerL:

共享内存消费者类(不带锁)CShmComsumer:

共享内存消费者类(带锁)CShmComsumerL:

共享内存通讯组件配置结构体TShmCommuConf

共享内存通讯组件结构体CTShmCommu

tshmcommu.cpp:实现tshmcommu.h中定义各个类

notify.h:定义了用于通知共享内存有数据可以接收的类CNotify notify.cpp:实现了用于通知共享内存有数据可以接收的类CNotify 六、进程通信基础库

tprocmon.h: 定义了

各类消息相关宏,

进程事件相关宏,

进程操作相关宏,

进程状态相关宏,

进程组信息结构体TGroupInfo,

进程信息结构体TProcInfo,

事件通知结构体TProcEvent,

服务器端与客户端通讯消息包TProcMonMsg,

通讯基类CCommu,

消息队列通讯类CMQCommu,

内部使用的多种数据结构,进程组对象结构体TProcGroupObj,进程对象结构体TProcObj

进程通讯函数指针

进程查询对象结构体TProcQueryObj

进程监控服务端类CTProcMonSrv

进程监控客户端类CTProcMonCli

tprocmon.cpp:

实现tprocmon.h头文件中定义的各个类

hide_private.h:定义消息进程信息结构体MG_PROC_INFO

misc.h:定义一个杂项操作封装类CMisc

misc.cpp:实现类CMisc

七、网络通信基础库

1、在tbase文件夹下tcommu.h:定义了以下内容:

1)通用通信错误宏

#define COMMU_ERR_OVERLOAD_PKG -100

#define COMMU_ERR_OVERLOAD_CONN -200

2)SOCKET域参数类型宏

#define SOCK_TYPE_TCP 0x1

#define SOCK_TYPE_UDP 0x2

#define SOCK_TYPE_UNIX 0x4

#define SOCK_TYPE_NOTIFY 0x8

#define SOCK_MAX_BIND 300

3)回掉函数类型枚举cb_type,

4)控制命令枚举ctrl_type:

5)回调函数类型:

//flow: 数据包唯一标示

//arg1: 通用参数指针1,一般指向数据blob

//arg2: 通用参数指针2,用户注册回调函数传入的自定义参数指针

typedef int (*cb_func)(unsigned flow, void* arg1, void* arg2);

6)数据blob结构体:blob_type,

typedef struct {

int len; //数据长度

char* data; //数据缓冲区

void* owner; //组件指针

void* extdata; //扩展数据, 具体组件有具体的含义

} blob_type;

7)连接扩展信息结构体:TConnExtInfo

typedef struct {

int fd_; //fd

int type_; //fd type (SOCK_STREAM\SOCK_DGRAM\...)

unsigned localip_; //local ip

unsigned short localport_; //local port

unsigned remoteip_; //remote ip

unsigned short remoteport_; //remote port

time_t recvtime_; //recv tv_sec

suseconds_t tv_usec; //recv tv_usec

} TConnExtInfo;

8)通讯类抽象接口类:CTCommu

类CTCommu用于定义通讯的抽象接口,

主要定义了以下通用接口

(1)初始化

virtual int init(const void* config) = 0;

(2)轮询,收发数据

virtual int poll(bool block = false) = 0

(3)发送数据提交

virtual int sendto(unsigned flow, void* arg1, void* arg2) = 0;

(4)控制接口

virtual int ctrl(unsigned flow, ctrl_type type, void* arg1, void* arg2) = 0;

(5)控制接口

virtual int reg_cb(cb_type type, cb_func func, void* args = NULL)

(6)清空所有共享内存队列,仅供proxy启动时使用

virtual int clear() = 0;

在tbase/tsockcommu文件夹下,包括以下源码文件,各文件的用途如下

1、tsockcommu.h: 定义了以下内容:

1)结构体TIpport;

2)结构体TSockBind;

3)套接字配置结构体TSockCommuConf:

4)继承于CTCommu类的Socket方式通讯的公共类CTSockCommu

类CTSockCommu除了实现接口CTCommu类中的虚函数外,另外新增以下函数:

(1)增加worker进程到proxy进程的通知

int addnotify(int fd);

(2)获取连接池中被使用的连接流

int getconn();

类CTSockCommu中重要的成员变量如下:

(1)std::map sockbind_; //套接字绑定信息

(2)blob_type buff_blob_接收的数据

(3)TConnExtInfo extinfo_连接相关信息

(4)struct TInternal* ix_; 操纵内存池,连接池和epoll的句柄

2、tsockcommu.cpp:

实现类CTSockCommu

1)首先定义了CTSockCommu内部结构体CTSockCommu::TInternal,其内部包含一个指向共享内存池的指针mempool_,一个指向连接池的

指针connset_,一个操作epoll对象的指针epollflow_。

同时在CTSockCommu内有一个TInternal类型的指针ix_,用于处理

连接,内存和epoll操作

2)实现构造、析构函数

3)函数check_expire:

实现超时处理函数,控制空闲连接超时,调用回调函数。

4)函数create_sock:

实现创建listen 的Socket

(1)调用CSocket的静态成员函数create建立监听套接字

(2)设置该套接字被重用

(3)设置套接字为非阻塞

(4)设置套接字的接收buff,绑定ip端口或路径

(5)调用CSocket的静态成员函数listen开启套接字监听

5)函数handle_accept

实现接入客户端连接的

(1)每次poll最多建立50个连接,调用CSocket的accept函数

(2)设置跟客户端连接的套接字为非阻塞的

(3)将对应的连接加入连接池

(4)连接建立回调

(5)连接加入epoll池

6)函数handle_accept_udp

实现接入客户端udp请求

(1)将连接加入连接池

(2)收数据,udp数据一次就可以收完整

7)函数init

实现解析配置,初始化

8)函数addnotify

加入worker到proxy之间的通知

9)函数poll

收发数据

(1)通过CEPollFlowResult接收epoll wait通知,轮询事件,根据事件类型不同做如下各种处理

(2)如果是建立新连接(新数据udp)请求,则根据套接字类型,分别调用handle_accept、CNotify::notify_recv、handle_accept_udp进行处理(3)如果是非正常事件,则关闭连接

(4)如果是发送数据(写事件EPOLLOUT),处理发送请求

(5)如果是收取数据(读事件EPOLLIN),处理接收请求

10)函数sendto

使用连接池发送数据

11)函数ctrl,控制接口暂不使用

12)函数getconn,获取对应的数据流

3、tsocket.h:定义了

socket地址类CSocketAddr,该类主要用于对结构体sockaddr_in的封装,增添了一些常用的操作

类定义中直接实现了以下成员函数:

1)函数addr返回结构体sockaddr_in类型成员变量_addr的地址,转换为sockaddr类型指针

2)函数addr_in返回结构体sockaddr_in类型成员变量的地址,转换为sockaddr_in类型指针

3)函数length返回结构体sockaddr_in类型成员变量_addr的长度

4)函数get_numeric_ipv4返回ipv4格式的IP地址

5)函数set_numeric_ipv4设置ipv4格式的IP地址

6)函数get_family返回_addr的协议族

7)函数set_family设置_addr的协议族

tcp/udp/unixsocket通讯类CSocket主要封装了一系列对套接字进行操作的静态成员函数

4、tsocket.cpp:实现类CSocketAddr,类CSocket

CPP文件中,实现类CSocketAddr以下两个静态成员函数

1)函数in_n2s

转换网址地址为字符串

2)函数in_s2n

转换字符串为网络地址

类CSocket实现以下

1)函数create

创建套接字

2)函数close

关闭套接字

3)函数bind

绑定套接字的IP和端口,绑定unix本地套接字

4)函数bind_any

绑定套接字的任意IP和指定端口

5)函数listen

监听socket

6)函数accept

接收连接

7)函数connect

发起连接(远程网络地址或本地套接字)

8)函数receive

接收数据(TCP或UDP)

9)函数send

发送数据(TCP或UDP)

10)函数shutdown

关闭连接

11)函数get_peer_name

获取对端地址和端口

12)函数get_sock_name

获取本地地址和端口

13)函数set_reuseaddr

设置地址重用

14)函数set_nonblock

设置socket非阻塞

15)函数set_timeout

设置接收和发送的超时时间

16)函数set_recvbuf

设置socket对应的接收数据的缓冲区大小

5、tmempool.h: 定义类CMemPool

类CMemPool用于分配和回收内存,此处在类体中定义了对应的操作函数。

6、tmempool.cpp: 实现类CMemPool

实现以下两个函数:

1)函数allocate

调用malloc分配内存

2)函数recycle

调用free释放内存

7、myepoll.h:定义为了兼容老系统的epoll三大主要函数,因为兼容老系统, glibc 没有直接的epoll接口

8、tepollflow.h: 定义类CEPollFlow,类CEPollFlowResult

类CEPollFlow定义了socket对应的epoll操作,它封装了3个成员变量:套接字_fd,注册事件结构体指针_events,和最大监听事件数_maxFD,它封装的对epoll的操作函数有create、ctl、add、modify、del和wait。

类CEPollFlowResult定义了对epoll事件通知结果的封装,在类的内部还定义了一个iterator类,专门用于对event事件数组进行访问的方法

9、tepollflow.cpp: 实现类CEPollFlow,类CEPollFlowResult

在本文件中,类CEPollFlow实现了以下成员函数:

1)函数create:调用epoll_create函数创建epoll,并new出对应参数个事件的event数组

2)函数wait:调用epoll_wait函数,将返回的event数组和事件个数生成对应的CEPollFlowResult类对象

3)函数ctl:调用epoll_ctl函数,完成对对应fd的事件修改(MOD、ADD、DEL)

在本文件中,类CEPollFlowResult中的类iterator实现了以下成员函数:

1)函数flow:返回事件通知数组中某个元素对应的连接ID

2)函数fd:返回事件通知数组中某个元素对应的套接字fd 10、tconnset.h: 定义连接池集合类CConnSet

定义了以下函数

1)函数dumpinfo:打印flow所连接的信息

2)函数addconn:添加连接

3)函数fd:查询fd

4)函数recv:接收数据

5)函数send:发送数据

6)函数sendfromcache:从缓冲区接收数据

7)函数closeconn:关闭连接

8)函数check_expire:检查连接是否过期

9)函数getusedflow:获取当前使用的flow个数

10)函数getcc:查找连接对应的cache

封装的成员函数如下:

1)ConnCache指针数组类型成员变量:ccs_

2)建立的最大连接数:maxconn_

3)当前使用的flow:usedflow_

11、tconnset.cpp: 实现连接池集合类CConnSet

12、tcache.h: 定义纯cache对象类CRawCache,连接对象cache类

13、tcache.cpp: 实现纯cache对象类CRawCache,连接对象cache类

u-boot启动分析

背景: Board →ar7240(ap93) Cpu →mips 1、首先弄清楚什么是u-boot Uboot是德国DENX小组的开发,它用于多种嵌入式CPU的bootloader程序, uboot不仅支持嵌入式linux系统的引导,当前,它还支持其他的很多嵌入式操作系统。 除了PowerPC系列,还支持MIPS,x86,ARM,NIOS,XScale。 2、下载完uboot后解压,在根目录下,有如下重要的信息(目录或者文件): 以下为为每个目录的说明: Board:和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,子目录存放和开发板相关的配置文件。它的每个子文件夹里都有如下文件(以ar7240/ap93为例): Makefile Config.mk Ap93.c 和板子相关的代码 Flash.c Flash操作代码 u-boot.lds 对应的链接文件 common:实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c cpu:与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录mips等。它的每个子文件夹里都有入下文件: Makefile Config.mk Cpu.c 和处理器相关的代码s Interrupts.c 中断处理代码 Serial.c 串口初始化代码 Start.s 全局开始启动代码 Disk:对磁盘的支持

Doc:文档目录。Uboot有非常完善的文档。 Drivers:Uboot支持的设备驱动程序都放在该目录,比如网卡,支持CFI的Flash,串口和USB等。 Fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。 Include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目下configs目录有与开发板相关的配置文件,如 ar7240_soc.h。该目录下的asm目录有与CPU体系结构相关的头文件,比如说mips 对应的有asm-mips。 Lib_xxx:与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。 Net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。 Tools:生成Uboot的工具,如:mkimage等等。 3、mips架构u-boot启动流程 u-boot的启动过程大致做如下工作: 1、cpu初始化 2、时钟、串口、内存(ddr ram)初始化 3、内存划分、分配栈、数据、配置参数、以及u-boot代码在内存中的位置。 4、对u-boot代码作relocate 5、初始化malloc、flash、pci以及外设(比如,网口) 6、进入命令行或者直接启动Linux kernel 刚一开始由于参考网上代码,我一个劲的对基于smdk2410的板子,arm926ejs的cpu看了N 久,启动过程和这个大致相同。 整个启动中要涉及到四个文件: Start.S →cpu/mips/start.S Cache.S →cpu/mips/cache.S Lowlevel_init.S →board/ar7240/common/lowlevel_init.S Board.c →lib_mips/board.c 整个启动过程分为两个阶段来看: Stage1:系统上电后通过汇编执行代码 Stage2:通过一些列设置搭建了C环境,通过汇编指令跳转到C语言执行. Stage1: 程序从Start.S的_start开始执行.(至于为什么,参考u-boot.lds分析.doc) 先查看start.S文件吧!~ 从_start标记开始会看到一长串莫名奇妙的代码:

数据库课程设计 银行管理系统

数据库课程设计银行 管理系统

武汉理工大学华夏学院 课程设计报告书 课程名称:《数据库系统原理》课程设计题目:银行储蓄管理系统数据库设计

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 设计题目:银行储蓄管理系统数据库设计 初始条件: 本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。 要求完成的主要任务: 要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的 银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设 计、物理结构设计,数据录入及测试等,完成题目要求的功能。 主要任务: 用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借还工作,对读者档案、图书档案、借还系统的访问,必需进行身份验证。具体要求如下: 1.存折信息 数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。 2.账户存取明细 数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。 3.检索系统 能根据户名、账号、交易日期、金额等进行查询。 4.取款 输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。 5、存款 输入账号和存款金额后,能更新该账号的余额。

6、转账 输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。 设计报告撰写格式要求: 要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。设计报告正文字数不少于0.2万字(不包括附录) 第1级(章)题序和题名用黑体三号字, 第2级(目)题序和题名用黑体小四号字, 第3级(条)题序和题名用黑体小四号字, 正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。 报告内容一律使用A4打印纸计算机打印,页码在页下居中标明。必须使用国家公布的规范字。 页面设置:上空2.5 cm,下空2.0 cm,左空2.5 cm,右空2.0cm(左装订)。 插图图面要整齐、美观,插图应与正文呼应,不能脱节。每幅插图应有图序与图题,图序编号要连续,图序与图题间空一格且要放在插图下方居中处。 时间安排: 消化资料、系统调查 1天 系统分析、总体设计,实施计划、撰写报告 3天 演示、验收1天 指导教师签字: 2012年 6月 25日 系主任签字: 2012年 6月25 日

UBoot移植详解

u-boot 移植步骤详解 1 U-Boot简介 U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux 系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT 改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。 选择U-Boot的理由: ①开放源码; ②支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS; ③支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; ④较高的可靠性和稳定性; ④较高的可靠性和稳定性; ⑤高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等; ⑥丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等; ⑦较为丰富的开发调试文档与强大的网络技术支持; 2 U-Boot主要目录结构 - board 目标板相关文件,主要包含SDRAM、FLASH驱动; - common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测;

网络数据库课程设计报告

实验(课程设计)报告名称:网络数据库课程设计 姓名:刘岩 学号:071103417 年级专业:11级信息管理与信息系统 年月日

成绩: 评语: 指导教师:(签名)

一、课程设计的目的及意义 这次的课程设计,我们的任务是设计一个针对某商品批发销售企业进销存业务的数据系统。这个系统中涵盖了采购部门、销售部门和库存部门等各项管理部门,也涉及到采购、销售以及库存管理多方面的智能。该系统能够对客户的信用、订单、供应商、出进货等信息提供存储、更新、查询、统计等功能,从而实现企业根据业务事务发生的不同情况,正确计算产品库存的功能,其中包括:基本资料的维护、采购功能、批发功能、库存管理、盘点管理、维护日志记录等。这样以来,企业能够合理控制进销存各个环节,提高了资金的利用率,从而实现管理的高效率、实时性、安全性、科学化、现代化和智能化。 二、课设计划 1、交付成果 小组共上交四份成果,包括系统设计书、开发报告、ERwin设计文件、 2、进度计划 准备工作——2013年12月23日晚。搜集课程设计的材料、查看数据库设计相关内容,并了解本课设的整体流程。 人员分工——2013年12月23日晚。小组对本课设进行讨论,并进行分工。 课程设计——2013年12月23日至27日 实体关系设计—24日午完成。分配到这个部分的成员首先熟知此业务的流程以及功能要求,建立实体逻辑和物理模型。 表空间及数据文件—24日午前完成。负责创建用户及两个表空间,一个存放表一个存放索引。 建表及索引—25日午完成。建表及创建相应的索引。 存储过程及触发器—26日晚前完成。创建存储过程以及采购和销售触发器,并分别进行测试。 3、质量保证计划 数据建模规范性:构建数据库逻辑模型,由于是项目组成员之间在数据库层面沟通交互的依据,必须规范作图,包括表、主键、外键及关系。命名字段尤其要注意,既要让人易懂也要简练,并注意字长等。 表的设计规范性:对于主键的设置,除临时表和外部表外都要建立主键;还有就是表空间的使用规范,对于很少用于增删改的表、经常发生INSERT的表以及发生两种以上DML操作的动态表,要放在不同的表空间中。 索引建立规范:针对大数据量表应该先在唯一约束列上建立普通索引,再添加唯一性约束。还要注意索引重建的规范。 SQL访问规范:要注意增删改语句的使用,避免语句的使用错误。 4、小组分工与协作计划 小组分工: 构建实体关系:刘岩(负责人)、林智敏(检查者) 表空间及数据文件:张丛(负责人)、吴乾煌(检查者) 创建索引:张丛(负责人)、吴乾煌(检查者) 存储过程:张凯(负责人)、杨煌辉(检查者) 触发器:马成龙(负责人)、谢佳辉(检查者) (备注:指导者——张瑜)

AM335x uboot spl分析

AM335x uboot spl分析 芯片到uboot启动流程 ROM → SPL→ uboot.img 简介 在335x 中ROM code是第一级的bootlader。mpu上电后将会自动执行这里的代码,完成部分初始化和引导第二级的bootlader,第二级的bootlader引导第三级bootader,在 ti官方上对于第二级和第三级的bootlader由uboot提供。 SPL To unify all existing implementations for a secondary program loader (SPL) and to allow simply adding of new implementations this generic SPL framework has been created. With this framework almost all source files for a board can be reused. No code duplication or symlinking is necessary anymore. 1> Basic ARM initialization 2> UART console initialization 3> Clocks and DPLL locking (minimal) 4> SDRAM initialization 5> Mux (minimal) 6> BootDevice initialization(based on where we are booting from.MMC1/MMC2/Nand/Onenand) 7> Bootloading real u-boot from the BootDevice and passing control to it. uboot spl源代码分析 一、makefile分析 打开spl文件夹只有一个makefile 可见spl都是复用uboot原先的代码。 主要涉及的代码文件为u-boot-2011.09-psp04.06.00.03/arch/arm/cpu/armv7 u-boot-2011.09-psp04.06.00.03/arch/arm/lib u-boot-2011.09-psp04.06.00.03/drivers LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-spl.lds 这个为链接脚本 __image_copy_end _end 三、代码解析 __start 为程序开始(arch/arm/cpu/armv7/start.S) .globl _start 这是在定义u-boot的启动定义入口点,汇编程序的缺省入口是 start 标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点。

关于银行系统的数据库课程设计报告书

一、目的与意义 0 二、设计容与要求 0 三、设计原理 (1) 1、数据库基本操作: (1) Ⅰ、定义基本表 (1) Ⅱ、修改基本表 (1) III、删除基本表 (1) IV、数据查询 (1) V、插入元组 (2) VI、修改数据 (2) VII、删除数据 (2) 2、数据库完整性 (2) I、实体完整性定义 (2) II、参照完整性定义 (2) 3、触发器 (3) I、定义触发器 (3) II、激活触发器 (3) III、删除触发器 (3) 4、存储过程 (3) I、PL/SQL的块结构 (3) II、变量常量的定义 (4) III、控制结构 (4) IV、存储过程的用户接口 (5) 四、总体设计方案 (5) 五、详细设计 (5) 1、需求分析 (5) 2、流程图 (6) 3、E-R图 (6) 4、设计表 (6) 5、关系图 (7) 6、编码 (8) 六、测试与调试 (11) 七、收获与体会 (15) 八、主要参考资料 (15) 一、目的与意义 本课程设计是在学完《数据库系统与应用》课程之后,让学生综合应用数据库知识,设计数据库,进行调试与测试,以加深对数据库基本知识及SQL语言的理解,提高综合应用知识的能力、分析解决问题的能力,加强数据库知识的实践技能,初步培养开发实用数据库系统的能力。 二、设计容与要求 设计一个银行账户管理系统,至少能够实现存款、取款、查询、转账等基本功能,要求在在数据库实现过程中至少建立三表、不得少于四个查询、三个触发器、使用至少一个存储

三、设计原理 SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。SQL是一个通用的、功能极强的关系数据库语言。它之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。 1、数据库基本操作: Ⅰ、定义基本表 语句格式: CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] … [,<表级完整性约束条件> ] ); 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。 Ⅱ、修改基本表 语句格式: [ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ ALTER COLUMN<列名> <数据类型> ]; III、删除基本表 语句格式: DROP TABLE <表名>[RESTRICT| CASCADE]; RESTRICT:删除表是有限制的。欲删除的基本表不能被其他表的约束所引用,如果存在依赖该表的对象,则此表不能被删除。 CASCADE:删除该表没有限制。在删除基本表的同时,相关的依赖对象一起删除。 IV、数据查询 语句格式: SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表名或视图名>[, <表名或视图名> ] … [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];

UBoot源码分析1

?UBoot源码解析(一)

主要内容 ?分析UBoot是如何引导Linux内核 ?UBoot源码的一阶段解析

BootLoader概念?Boot Loader 就是在操作系统内核运行之前运行 的一段小程序。通过这段小程序,我们可以初始 化硬件设备、建立内存空间的映射图,从而将系 统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境 ?通常,Boot Loader 是严重地依赖于硬件而实现 的,特别是在嵌入式世界。因此,在嵌入式世界 里建立一个通用的Boot Loader 几乎是不可能的。 尽管如此,我们仍然可以对Boot Loader 归纳出 一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。

UBoot来源?U-Boot 是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM 的源码创建了 PPCBoot 工程项目,此后不断 添加处理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移 植到 ARM 平台上,创建了 ARMBoot 工程项目。最终, 以 PPCBoot 工程和 ARMBoot 工程为基础,创建了 U- Boot 工程。 ?而今,U-Boot 作为一个主流、通用的 BootLoader,成功地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流体系结构上的百种开发板,成为功能最多、 灵活性最强,并且开发最积极的开源 BootLoader。目前。 U-Boot 仍然由 DENX 的 Wolfgang Denk 维护

MYSQL数据库课程设计

《MYSQL数据库》课程设计 一、目的和要求 (1)培养学生运用所学课程《MYSQL数据库》中数据设计方面的理论知识和技能,深入理解数据库设计相关的理论知识,学会分析实际问题的能力。 (2)培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 (3)通过课程设计,要求学生在教师的指导下,独立完成要求的相关内容,包括: 1)通过调查研究和运用Internet,收集和调查有关资料、最新技术信息。 2)根据课题的要求基本理解和掌握E-R图的设计方法和关系模式的转换。 3)根据课题的要求基本理解和掌握数据流图(DFD)和数据字典(DD)的设计方法。 4)创建数据库及各种数据库对象。 二、课程设计要求 以小组为单位(一个小组最多5人)任选下列一个题目,调查分析一个具体的或模拟的实例;(1)描述该实例的业务信息和管理工作的要求; (2)列出实体、联系; (3)指出实体和联系的属性; (4)画出E-R图; (5)将E-R图转换成关系模式,并注明主码和外码; *(6)建立数据字典; *(7)创建数据库; *(8)根据题目的要求写查询、存储过程、触发器等。 注:加“*”号的部分可在课程后期完成。 三、提交要求(电子材料)

四、供选题目 (1)学校图书借阅管理系统 功能要求: 实现图书信息、类别、出版社等信息的管理; 实现读者信息、借阅证信息的管理; 实现图书的借阅、续借、归还管理; 实现超期罚款管理、收款管理; 创建触发器,分别实现借书和还书时自动更新图书信息的在册数量; 创建视图查询各种图书的书号、书名、总数和在册数; 创建存储过程查询指定读者借阅图书的情况; 建立数据库相关表之间的参照完整性约束。 (2)高校学籍管理系统 功能要求: 实现学生信息、班级、院系、专业等的管理; 实现课程、学生成绩信息管理; 实现学生的奖惩信息管理; 创建规则用于限制性别项只能输入“男”或“女”; 创建视图查询各个学生的学号、姓名、班级、专业、院系; 创建存储过程查询指定学生的成绩单; 创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数; 建立数据库相关表之间的参照完整性约束。 (3)学校人力资源管理系统 实现学校部门信息、职务、职称和教职工信息管理; 实现教师的学籍经历管理; 实现教师的家庭关系管理; 实现教师的奖惩信息管理; 创建存储过程查询学校各部门各种职称的教职工数量; 创建触发器当增加、删除教职工和修改教职工部门信息时自动修改相应部门的职工人数;

uboot版本文件结构

uboot版本文件结构的更新改变 分类:ARM2011-09-22 12:57 339人阅读评论(0) 收藏举报本来是开始分析uboot代码的,但是无论是教材还是网上资料都对于我最新下的uboot原码结构不同,对于还是小白的我不容易找到相应的文件,下面是uboot版本中文件组织结构的改变,,,,, u-boot版本情况 网站:http://ftp.denx.de/pub/u-boot/ 1、版本号变化: 2008年8月及以前 按版本号命名:u-boot-1.3.4.tar.bz2(2008年8月更新) 2008年8月以后均按日期命名。 目前最新版本:u-boot-2011.06.tar.bz2(2011年6月更新) 2、目录结构变化: u-boot目录结构主要经历过2次变化,u-boot版本第一次从u-boot-1.3.2开始发生变化,主要增加了api的内容;变化最大的是第二次,从2010.6版本开始。 u-boot-2010.03及以前版本 ├── api存放uboot提供的接口函数 ├── board根据不同开发板定制的代码,代码也不少 ├── common通用的代码,涵盖各个方面,已命令行处理为主 ├── cpu与体系结构相关的代码,uboot的重头戏 ├── disk磁盘分区相关代码 ├── doc文档,一堆README开头的文件 ├── drivers驱动,很丰富,每种类型的设备驱动占用一个子目录 ├── examples示例程序 ├── fs文件系统,支持嵌入式开发板常见的文件系统 ├── include头文件,已通用的头文件为主 ├── lib_【arch】与体系结构相关的通用库文件 ├── nand_spl NAND存储器相关代码 ├── net网络相关代码,小型的协议栈 ├── onenand_ipl

【精编_推荐】关于银行系统的数据库课程设计

目录 一、目的与意义1 二、设计内容与要求1 三、设计原理2 1、数据库基本操作:2 Ⅰ、定义基本表2 Ⅱ、修改基本表2 III、删除基本表2 IV、数据查询3 V、插入元组3 VI、修改数据3 VII、删除数据4 2、数据库完整性4 I、实体完整性定义4 II、参照完整性定义4 3、触发器5 I、定义触发器5 II、激活触发器5 III、删除触发器5 4、存储过程6 I、PL/SQL的块结构6 II、变量常量的定义6

III、控制结构7 IV、存储过程的用户接口8 四、总体设计方案9 五、详细设计9 1、需求分析9 2、流程图9 3、E-R图9 4、设计表9 5、关系图10 6、编码10 六、测试与调试15 七、收获与体会15 八、主要参考资料16 一、目的与意义 本课程设计是在学完《数据库系统与应用》课程之后,让学生综合应用数据库知识,设计数据库,进行调试与测试,以加深对数据库基本知识及SQL语言的理解,提高综合应用知识的能力、分析解决问题的能力,加强数据库知识的实践技能,初步培养开发实用数据库系统的能力。 二、设计内容与要求 设计一个银行账户管理系统,至少能够实现存款、取款、查询、转账等基本功能,要求在在数据库实现过程中至少建立三张表、不得少于四个查询、三个触发器、使用至少一个存储过程。

三、设计原理 SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。SQL是一个通用的、功能极强的关系数据库语言。它之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。SQL语言集数据查询(DataQuery)、数据操纵(DataManipulation)、数据定义(DataDefinition)和数据控制(DataControl)功能于一体。 1、数据库基本操作: Ⅰ、定义基本表 语句格式: CREATETABLE<表名> (<列名><数据类型>[<列级完整性约束条件>] [,<列名><数据类型>[<列级完整性约束条件>]]… [,<表级完整性约束条件>]); 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。 Ⅱ、修改基本表 语句格式: [ADD<新列名><数据类型>[完整性约束]] [DROP<完整性约束名>] [ALTERCOLUMN<列名><数据类型>]; III、删除基本表 语句格式:

iTop4412的uboot第一阶段

2 uboo t 源码分析 2.5.1.star t.S 2.5.1.star t.S 引入引入 2.5.1.1、u-boot.lds中找到start.S入口 (1)在C语言中整个项目的入口就是 main函数(这是 个.c文件的项目,第一个要分析的文件就是包含了C语言规定的),所以譬如说一 个有 main函数的那个文件。 10000 ( 2 方。ENTRY(_start)因此 _start 符号所在的文件就是整个程序的起始文 件, _sta rt 所在处的 代码就是整个程序的起始代码。 2.5.1.2、SourceInsight中如何找到 文件 (1)当前状况:我们知道在uboot中的1000多个文件中有一个符号 叫 _start,但是我们不知道 这个符号在哪个文件中。这种情况下要查找一个符号在所有项目中文件中的引用,要使用SourceInsight的搜索功能。 (2)start.s 在cpu/arm_cortexa9/start.s (3)然后进入start.S文件中,发现 个uboot的入口代码,就是第57 57行中就 是行。_sta rt 标号的定义处,于是乎我们就找到了整 2.5.1.3、SI中找文件技巧 (1)以上,找到了start.S文件,下面我们就从start.S文件开始分析uboot第一阶段。 (2)在SI中,如果我们知道我们要找的文件的名字,但是我们又不知道他在哪个目录下,我 们要怎样找到并打开这个文件?方法是在 SI中先打开右边的工程项目管理栏目,然后点击 最左边那个(这个是以文件为单位来浏览的),然后在上面输入栏中输入要找的文件的名 字。我们在输入的时候,SI在不断帮我们进行匹配,即使你不记得文件的全名只是大概记 得名字,也能帮助你找到你要找的文件。 2.5.2.start.S解析1 2.5.2.1、不简单的头文件包含

数据库课程设计报告-校运动会管理系统

数据库课程设计报告 运动会数据库系统 目录 第一章系统概述 (2) 1. 1系统开发背景与意义 (2) 1.1.1系统开发背景 (2) 1.1.2系统开发意义 (2) 第二章系统需求分析 (3) 2.1 需求分析概述 (3) 2.2.1功能需求分析 (3) 2.2.2 可行性分析 (3) 2.2 系统数据流图 (4) 2. 3 数据字典 (6) 第三章系统总体设计 (8) 3. 1 系统概念设计 (10) 3.1.1 概念模型(E-R图) (10) 3..2 关系模式....................................... 错误!未定义书签。第四章数据库定义和数据安全性与完整性定义.............. 错误!未定义书签。 4. 1 数据库定义......................................... 错误!未定义书签。 4. 2 数据安全性与完整性定义............................. 错误!未定义书签。

第一章系统概述 1.1系统开发背景与意义 1.1.1系统开发背景 高等院校运动会是高校体育工作的重要组成部分。近年来,随着招生规模的扩大, 导致比赛项目、参赛人数不断增加,同时人们对比赛结果的准确性和实时性要求也越来越高,参赛队需要得到及时、准确的相关信息 ,从而有效进行竞赛的决策指导,这些问题和需求是采用人工方式或单机版运动会管理系统都难以解决的。为此,我们对运动会的信息综合管理系统进行了研究,使运动会的筹备、组织、管理、协调等工作全面实现了计算机网络化、自动化,极大的提高了工作效率和信息处理的实时性。 高校运动会作为各项体育运动的基础,具有广泛的群众性。每届的高校运动会声势浩大,是提高、检验学生的健康水平,开展全民健身运动的有效途径。由于比赛项目较多,参赛人数广,数据处理量大且变化时效性要求高,管理较为复杂,其编排,记录,公告工作是一项复杂的工程。为了解决在运动会管理和组织所面临的各种问题,我们开发了一套适合高校的运动会管理系统。在分析运动会管理需求的基础上,通过比较分析不同的开发模式和特点,系统采用简单实用的Windows环境下的基于浏览器/服务器的模式构建,用SQL Server2008作为后台数据库,提供对数据库的查询、添加、修改、删除等操作来实现信息网上管理,并对信息管理功能进行了详细的分析,以实现动态、交互、高效的网络化信息管理。系统能够对运动员的报名信息进行准确统计,能够有效处理赛程中的实时数据。 1.1.2系统开发意义 本次为学校举行的田径运动会设计运动会管理系统。要求对运动员(包括比赛项目和比赛成绩),比赛项目的设置,裁判判罚比赛,后勤人员和宣传组的相关工作等进行管理。具体来讲,田径运动会包括若干个比赛项目,由学校设置比赛项目和比赛规则,运动员根据比赛规则报名参赛,裁判对运动员的比赛进行记录,运动员参加比赛,由裁判评定和处理成绩,但须公平公正。 通过课程设计,让我们能够全面了解数据库应用系统的整个开发过程,验证课堂教学中的理论,掌握数据库系统的基本概念,基本原理及应用技术,掌握

uboot环境变量总结

Common目录下面与环境变量有关的文件有以下几个:env_common.c,env_dataflash.c,env_eeprom.c,env_flash.c,env_nand.c,env_nowhere.c,env_nvram.c,environment.c。 env_common.c中包含的是default_environment[]的定义; env_dataflash.c,env_eeprom.c,env_flash.c,env_nand.c, env_nvram.c 中包含的是相应存储器与环境变量有关的函数:env_init(void),saveenv(void),env_relocate_spec (void),env_relocate_spec (void),use_default()。至于env_nowhere.c,因为我们没有定义CFG_ENV_IS_NOWHERE,所以这个文件实际上没有用。 environment.c这个文件时是我真正理解环境变量的一个关键。在这个文件里定义了一个完整的环境变量的结构体,即包含了这两个ENV_CRC(用于CRC校验),Flags(标志有没有环境变量的备份,根据CFG_REDUNDAND_ENVIRONMENT这个宏定义判断)。定义这个环境变量结构体的时候还有一个非常重要的关键字: __PPCENV__,而__PPCENV__在该.c文件中好像说是gnu c编译器的属性,如下: # define __PPCENV__ __attribute__ ((section(".text"))) 意思是把这个环境变量表作为代码段,所以在编译完UBOOT后,UBOOT的代码段就会有环境变量表。当然,这要在我们定义了ENV_IS_EMBEDDED之后才行,具体而言,环境变量表会在以下几个地方出现(以nand flash为例): 1、UBOOT中的代码段(定义了ENV_IS_EMBEDDED), 2、UBOOT中的默认环 境变量, 3、紧接UBOOT(0x0 ~ 0x1ffff)后面:0x20000 ~ 0x3ffff 之间,包括备份的环境变量,我们读取,保存也是对这个区域(即参数区)进行的。3、SDRAM中的UBOOT中,包括代码段部分和默认部分,4、SDRAM中的melloc分配的内存空间中。 Environment.c代码如下: env_t environment __PPCENV__ = { ENV_CRC, /* CRC Sum */ #ifdef CFG_REDUNDAND_ENVIRONMENT 1, /* Flags: valid */ #endif { #if defined(CONFIG_BOOTARGS) "bootargs=" CONFIG_BOOTARGS "\0" #endif #if defined(CONFIG_BOOTCOMMAND) "bootcmd=" CONFIG_BOOTCOMMAND "\0" #endif #if defined(CONFIG_RAMBOOTCOMMAND) "ramboot=" CONFIG_RAMBOOTCOMMAND "\0"

数据库课程设计报告银行管理系统

目录 1绪论 1.1 选题目的及意义 (2) 1.2 设计内容 (2) 2需求分析 2.1 功能需求 (2) 2.2 数据需求 (2) 3数据库设计 3.1概念结构设计 (7) 3.2逻辑结构设计 (9) 3.3物理结构设计 (11) 4.设计结果及分析 4.1查询与结果分析 (24) 5.设计体会 (29) 参考文献

参与设计人员: 姓名学号班级负责项目 陈盛业20114419 信管(2)需求分析 李宁20114432 信管(2)数据库设计、分析 向绍鹏20114462 信管(2)绪论、设计体会 阳治安20114466 信管(2)数据库设计、分析 1.1选题的目的及意义 银行管理系统:该系统要求建立的用户表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用VC的能力。 1.2 设计内容 用户管理模块:建立新用户、删除老用户、更改用户操作; 账户操作模块:账户信息、活期存取款操作、查询活期操作记录、定期存款、定期取款、查询定期操作记录; 数据库模块:数据库备份、数据库恢复; 2需求分析 2.1功能需求 对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。 2.2数据需求

2.21数据字典 银行管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。在定义的银行数据库管理系统数据字典中,主要对数据流图中的账户信息 定期历史操作记录定期存款定期取款活期操作进行说明。【1】数据需求的描述 (1)数据项名称:帐号 含义说明:惟一标识一个用户 类型:数字型 长度:20 逻辑关系:不允许为空 (2)数据项名称:开户人姓名 类型:字符型 长度:20 逻辑关系:不允许为空 (3)数据项名称:账户密码 类型:数字型 长度:6 逻辑关系:不允许为空 (4)数据项名称:身分证号 类型:数字型 长度:20 逻辑关系:不允许为空 (5)数据项名称:账户余额

嵌入式Linux之我行 史上最牛最详细的uboot移植,不看别后悔

嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一) 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux 的朋友提供方便。如有错误之处,谢请指正。 ?共享资源,欢迎转载:https://www.doczj.com/doc/a69564299.html, 一、移植环境 ?主机:VMWare--Fedora 9 ?开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 ?编译器:arm-linux-gcc-4.3.2.tgz ?u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 本次移植的功能特点包括: ?支持Nand Flash读写 ?支持从Nor/Nand Flash启动 ?支持CS8900或者DM9000网卡 ?支持Yaffs文件系统 ?支持USB下载(还未实现) 1.了解u-boot主要的目录结构和启动流程,如下图。

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。各个部分的流程图如下:

2. 建立自己的开发板项目并测试编译。 目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM 处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。 1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440 2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改

大工15春《SQL数据库课程设计》模板及要求(最新)

大工15春《SQL数据库课程设计》模板及要求网络教育学院 《SQL数据库课程设计》 题目:XX系统的设计与实现 学习中心: 专业: 年级:年春/秋季

学号: 学生: 指导教师: 《SQL数据库课程设计》要求 《SQL数据库课程设计》是大连理工大学网络教育学院计算机应用技术专业开展的一项实践教学环节,是理论联系实践的纽带和桥梁,是培养学生综合运用所学知识解决实际问题的有效手段。该课程设计要求如下:1.要求学生以SQL Server 2008或其他版本为后台数据库,以VB、VC 或其他开发工具作为前台开发工具,围绕自己选定的某一个具体的系统完成一个小型数据库应用系统的开发,例如《图书管理系统的设计与实现》《书店管理系统的设计与实现》等。其课程设计具体内容包括项目概况、需求分析、详细设计等,详见课程离线作业中上传的《SQL数据库课程设计模板》。 注意:禁止撰写《学生成绩管理系统》课程设计!! 2.要求学生必须按照《SQL数据库课程设计模板》提供的格式和内容进行课程设计,完成课程设计模板提供的全部课程设计内容,字数要求达到3000字以上。 3.学生在进行课程设计的过程中,可参考辅导教师在导学资料中上传的

文献资料,有问题可通过课程论坛答疑。 4.2015年春季学期学生提交本课程设计形式及截止时间 学生需要以WORD附件形式(附件的大小限制在10M以内)将完成的课程设计以"离线作业"形式上传至课程平台中的"离线作业"模块,通过选择已完成的课程设计,点"上交"即可,如下图所示。 截止时间:2015年9月1日。在此之前,学生可随时提交课程设计,如需修改,可直接上传新文件,平台会自动覆盖原有文件。 5.课程设计批阅 老师会在离线作业关闭后集中批阅课程设计,在离线作业截止时间前不进行任何形式的批阅。 注意: 本课程设计应该独立完成,不准抄袭他人或者请人代做,如有雷同作业,

U_Boot第一启动阶段Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解)

Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解) Uboot启动分析笔记-----Stage1(start.S与lowlevel_init.S详解) 1 u-boot.lds 首先了解uboot的链接脚本board/my2410/u-boot.lds,它定义了目标程序各部分的链接顺序。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*指定输出可执行文件为ELF格式,32为,ARM小端*/ OUTPUT_ARCH(arm) /*指定输出可执行文件为ARM平台*/ ENTRY(_start) /*起始代码段为_start*/ SECTIONS { /* 指定可执行image文件的全局入口点,通常这个地址都放在ROM(flash)0x0位置*、. = 0x00000000;从0x0位置开始 . = ALIGN(4); 4字节对齐 .text : {

cpu/arm920t/start.o (.text) board/my2440/lowlevel_init.o (.text) *(.text) } . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } . = ALIGN(4); .data : { *(.data) } /* 只读数据段,所有的只读数据段都放在这个位置*/ . = ALIGN(4); .got : { *(.got) } /*指定got段, got段式是uboot自定义的一个段, 非标准段*/ . = .; __u_boot_cmd_start = .; /*把__u_boot_cmd_start赋值为当前位置, 即起始位置*/ .u_boot_cmd : { *(.u_boot_cmd) } /* u_boot_cmd段,所有的u-boot命令相关的定义都放在这个位置,因为每个命令定义等长,所以只要以__u_boot_cmd_start为起始地址进行查找就可以很快查找到某一个命令的定义,并依据定义的命令指针调用相应的函数进行处理用户的任务*/ __u_boot_cmd_end = .; /* u_boot_cmd段结束位置,由此可以看出,这段空间的长度并没有严格限制,用户可以添加一些u-boot的命令,最终都会在连接是存放在这个位置。*/

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