自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (8)
  • 收藏
  • 关注

原创 arm体系结构学习笔记 part4 -- 异常处理的返回

先来说说arm指令的处理过程:pc寄存器保存的总是当前正在取指的指令的地址。如果有如下指令序列S1,S2,S3,S4,S5这五条指令在内存中分布为:PC寄存器保存的总是当前正在取址的指令的地址,arm态下指令长度为4个字节,如图所示当前正在执行的指令为pc-8即pc的值为当前正在执行的指令加8同理在arm9五级流水的情况下:

2010-12-08 22:31:00 4217 1

原创 arm体系结构学习笔记 part3 -- 异常处理机制

先来看看异常向量表: 这个表格给出了当异常发生时候的程序将跳转到的地址  以及跳转到该地址的同时arm核所处的异常模式以未定义异常为例当arm核执行时遇到未定义的指令时  程序将自动跳转到异常向量表中的0x00000004地址处执行 并将处理器切换为未定义模式  与此同时其实arm核还完成了cpsr到spsr_und的备份以及设置异常处理完毕的返回地址保存到lr_und而复位异常的跳转地址为0x0  这是每次系统重新加电的时候arm核总是从0x0地址开始取指令指令    而系统上电时系统所处的模式总是svc

2010-12-07 22:15:00 2549 1

原创 arm体系结构学习笔记 part2 -- 中断相关

中断分类:1.由软件中断指令SWI引起的软件中断。SWI中断可以实现从用户模式到特权模式的切换。一般用于特权操作的系统程序。2.由外设引起的硬件中断。arm有两个中断控制信号 一个是fiq一个是irq 。中断控制器是这两个中断和多个外部中断之间的桥梁。通过设置cpsr的6 7位可以使能或者禁止这两类中断。中断响应时间:外部中断信号发出到取出中断服务程序的第一条指令经历的时间。FIQ模式下备份寄存器最多,保证了FIQ不需要花更多的时间去备份寄存器数据,而ldm和stm的执

2010-12-05 19:21:00 1261

原创 arm体系结构学习笔记 part1--处理器模式与寄存器

ARM920T supports seven modes of operation:· User (usr): The normal ARM program execution state· FIQ (fiq): Designed to support a data transfer or channel process· IRQ (irq): Used for general-purpose interrupt handling· Supervisor (svc): Protected m

2010-12-04 22:25:00 2181 1

原创 arm蛋疼汇编part 10--与位置有关代码 与位置无关代码

代码一:makefile:test.bin: test arm-2440-linux-gnueabi-objcopy -I elf32-littlearm test -O binary test.bin cp test.bin ../../test : test.o arm-2440-linux-gnueabi-ld -Ttext=0x30000000 test.o -o testtest.o : test.S arm-2440-linux-gnueabi-as test.S

2010-12-03 22:31:00 2443

原创 arm蛋疼汇编 part9 -- elf文件瞎扯

[leftover-crazy@leftover-crazy 6nd]$ arm-2440-linux-gnueabi-objdump -h test.o test2.o testtest.o: file format elf32-littlearmSections:Idx Name Size VMA LMA File off Algn 0 .text 0000007c 00000000 00000000

2010-12-01 23:12:00 1306

原创 arm蛋疼汇编 part8 -- 汇编 c 谁调用谁?

今晚学校网络真无法忍受了  哎~只能直接上代码了:makefile:test.bin: test arm-2440-linux-gnueabi-objcopy -I elf32-littlearm test -O binary test.bin cp test.bin ../../test: test.o test2.o arm-2440-linux-gnueabi-ld -Ttext=0x30000000 test.o test2.o -o testtest2.o: test2.c

2010-11-30 23:21:00 2558

原创 arm蛋疼汇编 part7--ATPCS 被调函数的标准“框架” 非山寨版本

test.S代码:@保护现场寄存器压栈 mov ip,sp @使用ip寄存器备份sp 此时sp指向函数调用前的数据栈中的最后一个数据 @即下一个存放用于本被调函数的数据栈顶地址为sp-4 stmfd sp!, {fp, ip, lr, pc} @满减栈 @ pc,lr ,ip ,fp 依次入栈 @栈中从高地址到低地址分别对应高编号入栈的寄存器到低编号的入栈寄存器

2010-11-29 21:17:00 2312 2

原创 arm蛋疼汇编 part6--写程序怎能不调试 eclipse cdt zylincdt openocd gdb 调试

step1:安装eclipse   cdt  这个google search 一大堆   archlinux  下 yaourt  直接   搞定step2:在线安装安装eclipse  zylincdt插件   eclipse下  Help==>install new software==>work with:  zylincdt - http://www.zylin.com/zylincdt 剩下的google search一堆setp3:安装openocd   yaourt搞定最新版  配置文件如下:

2010-11-27 23:52:00 1970 1

原创 arm蛋疼汇编 part5--接着hello uboot part3! ATPCS

先上代码:test.S如下 Makefile如下 test.S代码分析如下: 压栈后栈内数据分布由上而下(从高地址到低地址)分别存放 fp ip lr此时fp存放的是栈内第一个数据的地址 即fp的地址如此压栈倒腾后sp寄存器便可在我们写的被调程序中随意操作 即可以使用该栈 并且容易根据fp寄存器弹栈 只要在程序结束前恢复fp ip lr 即符合ATPCS规范 ARM-thumb 过程调用标准”:1, r0-r3 用

2010-11-26 19:58:00 1186

原创 arm蛋疼汇编 part4--接着hello uboot part2!

[leftover-crazy@leftover-crazy 3nd]$ vi test.S 代码如下:@压栈操作 str lr, [sp, #-4]!@函数调用 ldr r0, =hello @取hello标签地址给R0 既参数一的地址 @arm汇编参数传递通过 @R0传递第一个参数 @R1传递第二个参数

2010-11-25 21:10:00 1117

转载 arm蛋疼汇编 part3-- 转载 ARM微处理器的指令系统

跳转指令:arm程序跳转的两种方法:           1.直接修改pc寄存器的值   可以实现4GB空间的跳转           2.使用跳转指令   只能实现前后32M空间的跳转B:    相对来说有去无回的跳转    格式:   B{条件}   目标地址         eg:B Lable@@@@@@@@@@@@@@@@@@@@@@@CMP R0,#0BEQ Lable @相等则跳转 BL:  带返回的跳转 跳转前将PC寄存器的值写入LR寄存器(R14)  格式:   BL{

2010-11-24 19:51:00 912

原创 arm蛋疼汇编part 2 -- arm寻址方式

寻址方式:处理器根据指令给出的地址信息寻找物理地址的方式。立即数寻址:地址信息包含在指令中eg:add r0,r0,#2 @十进制 2为立即数 r0寄存器寻址:地址信息存放于寄存器中eg:add r0,r1,r2 @ r0

2010-11-23 21:50:00 706

原创 arm蛋疼汇编part 1

mov r0,r1 mov r0,#133 ldr r0,=1234567890 add r0,r1,r0 sub r0,r1,r0lable1:@以下两条指令将r1存储的内存地址为12345内的数据读取到r0中 ldr r1,=12345 ldr r0,[r1] label2: @以下两条指令将r0中的数据存储到r1保存地址为123456的内存中 ldr r1,=123456 str r

2010-11-18 22:46:00 962

原创 简单uboot下可执行程序编写笔记

[leftover-crazy@leftover-crazy bootloaderprj]$ vi hellobootloader1.c 代码如下void (*show)(char *, ...);int main(int argc, char *argv[]){ show = 0x33f9303c; show("Hello u-boot!/n"); return 0;} 编译:[leftover-crazy@leftover-crazy bootloaderp

2010-11-16 23:01:00 3623 1

转载 程序员的十个层次

<br /><br />自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。<br />那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知

2010-11-13 00:11:00 998 1

原创 archlinux平台下 tftp-hpa 的安装配置笔记

[leftover-crazy@leftover-crazy ~]$ yaourt tftp1 extra/tftp-hpa 5.0-3 Official tftp server 选1安装rftp server修改/etc/hosts.allowsudo vim /etc/hosts.allow 内容修改如下## /etc/hosts.allow#tftpd: ALL //增加in.tftpd: ALL //增加nfsd: ALLrpcbind: ALLmou

2010-10-30 16:35:00 2920

原创 archlinux平台下 fl2440 主机nfs服务器搭建

参考archlinux wikihttps://wiki.archlinux.org/index.php/NFS_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 服务器端和客户端所需要的软件包都是很少的。你只需要安装:core/portmapcore/nfs-utils 

2010-10-28 21:40:00 2802

原创 备份

[INFO ] Performing some trivial sanity checks[INFO ] Build started 20100922.000656[INFO ] Building environment variables[WARN ] Directory '/home/leftover-crazy/src3' does not exist.[WARN ] Will not save downloaded tarballs to local storage.[

2010-09-22 00:28:00 756

原创 archlinux平台下 fl2440 使用minicom加dnw2烧写flash

minicom使用和安装已经在上一篇中做了简要说明之后是dnw2的安装以及使用首先应该安装usb的驱动对应二进制包为libusbsudo apt-get install libusb-dev //ubuntu环境sudo pacman -S libusbsudo pacman -S libusb1 //archlinux环境安装完usb驱动后安装dnw2 网上很多文章说的都是自己用dnw2编译安装其实archlinbux下很方便的可以使用yaourt dnw2关于yaourt的使用就不

2010-09-19 22:34:00 2714 1

原创 FL2440在linux平台下minicom的使用 串口收发文件

开发平台:archlinuxminicom安装sudo pacman -S minicom lrzsz协议安装 包括了x/y/zmodem协议,安装完成后可以直接通过串口线进行pc与开发板直接的文件双向传送sudo pacman -S lrzsz 

2010-09-18 02:31:00 2894

原创 一个土鳖的时间范围查询条件写法 基于QDateEdit和sqlite的smalldatetime

<br />if(ui->dateEdit->date()>ui->dateEdit_2->date()) { QMessageBox::about(this,tr("日期范围错误"),tr("开单的起始时间不能大于开单的截止时间,请点击'确定'返回重新设置日期间隔!")); return; } QString datetime1,datetime2; datetime1=QString::number(ui->dateEdit->

2010-08-05 04:38:00 2837

原创 QSqlDatabase 使用小结,解决部分数据库操作导致程序崩溃的办法

这两天都在为 QSqlDatabase 类头疼   因为涉及多个连接  连接到同一个数据库     而又没有对各个连接设置名称  网上大部分简易教程都是采用默认数据库连接名称   这样就会导致在对其中一个数据库连接进行操作时  影响到其它数据连接的操作(其实本质上他们是同一个连接)      因为我采用多文档窗体在各个窗体处理不同的数据连接  所以移除或者改变一个连接  也会导致其它连接跟着受到影响     直接导致了程序假死崩溃  本来毫无头绪  不知道个所以然        参照前辈的文章来写程序  也

2010-08-04 16:18:00 9544 1

原创 QSqlDatabase 与多文档窗口注意事项(此文有部分错误 仅作留档 请参见下一篇解释)

当多文档窗口中有多个子窗口同时显示,而这几个子窗口又同时连接同一个数据库时,如果在子窗口的析构函数中使用void QSqlDatabase::close ()或者void QSqlDatabase::removeDatabase ( const QString & connectionName ) [static]此时会发现当关闭其中一个子窗口时正常   当关闭第二个子窗口时程序将崩溃原因是第一个窗口关闭了数据库连接,或者移除了数据库,而第二个窗口关闭时又要关闭此连接,或者移除此数据库,而此时此链接或者

2010-08-04 04:09:00 1065

原创 QSqlDatabase 数据库操作没有removeDatabase 导致程序崩溃(此文极有可能是错误的,仅作个人留档参考)

void QSqlDatabase::removeDatabase ( const QString & connectionName ) [static]Removes the database connection connectionName from the list of database connections.Warning: There should be no open queries on the database connection when this function

2010-08-02 22:54:00 4539

原创 QSqlQuery插入数据操作实例,包含批处理代码

<br />void KaiDanWnd::on_action_4_triggered(){ if(ui->lineEdit->text()==tr("")) { QMessageBox::about(this,tr("数据填写不完整"),tr("客户姓名未填写")); return; } if(ui->lineEdit_3->text()==tr("")) { QMessageBox::about(

2010-08-02 02:39:00 6739 4

原创 QTabWidget bug导致程序崩溃

<br />QTabWidget 使用的时候如果读取的数据不存在     或者读取的数据项在setitem的时候没有写入数据,则程序会崩溃<br />比如:<br />//ui->tableWidget->setItem(row,0,new QTableWidgetItem(tr("***")+ui->comboBox_6->currentText().trimmed()+tr("***")+ui->tableWidget->item(currentrow,0)->text())); ui

2010-07-31 02:58:00 3290

原创 QTabWidget 的使用小记

实例化QTabWidget 后需要做如下设置 QStringList headers;//存放列标题QSting组 headerstableWidget->setColumnCount(8);//设置列数 ui->tableWidget->setRowCount(0);//设置行数 ui->tableWidget->setHorizontalHeaderLabels(headers);//设置列标题 ui->tableWidget->resizeColumnsT

2010-07-30 00:28:00 6297 2

原创 qt 程序发布以及中文翻译的方法

<br />程序发布的话非静态编译  必须带上所有的dll动态连接库<br />没有带上动态链接库的话  程序运行时会提示缺少XXX.dll<br />只要在qt安装目录内找到相应的dll复制到exe程序所在目录内就可以了<br />譬如我现在windows下的qt安装在C:/Qt/2010.04     提示缺少QtCore4.dll   QtGui4.dll   QtSql4.dll  libgcc_s_dw2-1.dll  这四个连接库    <br />则只需要将C:/Qt/2010.04/qt/b

2010-07-28 23:52:00 1555

原创 qt model和view的table 小记

QT中的model和view都是采用index索引   index含有两个成员变量一个是row   一个是column  对应该索引的行号列号model提供数据    view提供视图   view用来显示model的数据   必须将model绑定到某个view中才能显示 ui->tableView->setModel(model);ui->tableView->currentIndex();//获取选中单元格的indexui->tableView->currentIndex().column();//

2010-07-28 02:01:00 4729

原创 qt右键菜单的简单实例 ContextMenu

  enum ContextMenuPolicy { NoContextMenu, DefaultContextMenu, ActionsContextMenu, CustomContextMenu, PreventContextMenu };void TextWnd::on_tableView_customContextMenuRequested(QPoint pos){ Q

2010-07-27 21:34:00 4567

原创 一个夭折 脱裤子放屁的QSql Sqlite操作类

<br />本来想自己封装一下Sqlite操作类   写到一半才发现是脱裤子放屁       多此一举了  <br />自己写的东西还没有Qt用起来简洁      唯一的好处估计就是能在整个工程里对同一个数据库进行操作     能通过QDir查找指定目录下的数据库文件     绑定到combobox让用户手动选择操作的数据库        有空再添加以下数据库的备份函数  其实思路也就是文件另存为  <br />一下代码贴出来自嘲一下  唉 <br />.h文件<br />#ifndef SQLITEDB_

2010-07-27 00:40:00 1265

原创 QDir对某个目录内文件名进行模糊搜索

QStringList SqliteDB::findDbfiles(){ QDir dir; dir.setPath("./DbfInUse"); dir.setFilter(QDir::Files | QDir::Hidden); dir.setSorting(QDir::Name); QStringList names = dir.entryList(); QStringList newnames; newnames=names.

2010-07-27 00:31:00 6214

原创 qt中获取当前登录的用户信息类的简单实现

.h文件代码如下#ifndef CSF_H#define CSF_H#include #include class csf{public: csf(); static void setUserName(QString name);//填入用户姓名 static void setlogintime(QDateTime time);//填入用户登录时间 static void setissuperuser(int i);//填入管理员权限级别

2010-07-25 00:31:00 6464 1

原创 利用QCryptographicHash 加密QString

直接上代码了   废话不多说了   这是MD4加密   可以自己更改成QCryptographicHash::Md5  或者QCryptographicHash::Sha1QString Encrypt(QString s){ QByteArray string=s.toAscii(); QCryptographicHash *hash=new QCryptographicHash(QCryptographicHash::Md4); hash->addData(string

2010-07-25 00:15:00 5787 3

原创 QMdiArea相关

<br />Qt全屏显示函数         window.showFullScreen()<br />Qt最大化显示函数         window.showMaximized()<br />Qt最小化显示函数         window.showMinimized()<br />Qt固定尺寸显示函数         window.resize(x,y)<br />void MainWindow::on_action_21_triggered(){ HelpWnd *hw=new Hel

2010-07-22 23:25:00 9047 3

原创 简单的QMessageBox显示版权信息

先说说QMessageBox::about吧void MainWindow::on_action_22_triggered(){ QMessageBox::about(this,tr("作者信息以及版权声明"),tr("晖源建材行财务管理系统 2.0""Copyright © 2010 蔡圣缝. All rights reserved.""晖源建材行财务管理系统由蔡圣锋基于QT 4.7.0独立开发完成,完全遵循LGPL协议。本软件仅允许晖源建材行免费作为商业应用,对于其它用户在未经作者允许的情

2010-07-21 02:00:00 2375 2

原创 qt中解决不同平台间编码问题以及登录窗口写法

#include #include "logindialog.h"#include "mainwindow.h"#include int main(int argc, char *argv[]){ QTextCodec *codec = QTextCodec::codecForName("utf8"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec);

2010-07-18 23:59:00 852

原创 QT中窗口如何隐藏最大话按钮 和设置背景图片

LoginDialog w; w.setWindowFlags((Qt::WindowCloseButtonHint)&(Qt::WindowMinimizeButtonHint)); w.setMinimumSize(500,300); w.setMaximumSize(500,300); w.show(); 

2010-07-17 21:27:00 2756 1

第7章 界面编程5-鼠标、键盘与光标

Windows是一种基于消息的交互式GUI操作系统,用户的操作主要通过鼠标和键盘进行。Windows利用消息来处理由用户操作所引发的鼠标和键盘事件,程序员一般通过在视图类中添加相应的消息响应函数,并编写具体响应代码来处理鼠标和键盘消息。鼠标的当前位置由屏幕上的光标来表示,程序员可以根据需要来动态设置不同形状的光标。 本章先介绍鼠标与键盘消息及其响应,然后再讨论设置与隐藏光标的方法,最后给出一个综合利用鼠标与键盘消息响应和光标设置的实例。

2010-07-15

第6章 界面编程4-控件

控件(control)是一类用于显示信息、接受输入、获取选择和完成操作的图形对象,是一些特殊的窗口,一般放置在对话框或其他框架窗口中。在上一章的“输入学生信息”对话框中所用到的静态文本框和文本编辑框,就是典型的常用控件,前者用于显示提示文本信息,后者用于接收用户的文本输入。单选钮、复选框、列表框和组合框等控件都用于获取用户的选择,而按钮则是用来完成特定操作的最常用控件。 本章只介绍若干常用的传统控件类及其使用方法,功能包新增加的控件类中,只有很少一部分会在第13章 “MFC功能包编程简介”中略有涉及,其余的控件和控件类还有待于读者自己去学习和研究。

2010-07-15

第2章 MFC基础 本章先介绍Visual C++和MFC的基本情况,然后讨论Windows API和MFC编程的基本方法。

MFC是传统Windows编程的首选。MFC是Windows API的C++类封装,MFC应用程序框架,提供了文档/视图结构和新消息映射机制。MFC编程是本书的重点,而本篇的重点则是用户界面编程和GDI绘图。本篇包含如下14章内容: 第2章 MFC基础 第3章 界面编程1—菜单 第4章 界面编程2—控制条 第5章 界面编程3—对话框 第6章 界面编程4—控件 第7章 界面编程5—鼠标、键盘与光标 第8章 GDI编程1—绘图 第9章 GDI编程2—字体、位图与图标 第10章 GDI编程3—动画 第11章 GDI编程4—图元文件与打印 第12章 文档与视图 第13章 MFC功能包编程简介 第14章 GDI+编程基础 第15章 GDI+高级编程 这是文件是 第2章 MFC基础 MFC(Microsoft Foundation Class Library,微软基础类库)是Windows API的C++类封装,是一种基于Visual C++的应用程序框架,提供了文档/视图结构和新消息映射机制,简化了Windows应用程序的编写。 本章先介绍Visual C++和MFC的基本情况,然后讨论Windows API和MFC编程的基本方法。

2010-07-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除