当前位置: 首页 > news >正文

桌面软件开发跟网站开发那个开发游戏app

桌面软件开发跟网站开发那个,开发游戏app,腾讯企点怎么登录,wordpress自动适应手机TQ210 —— 点亮LED 1、S5PV210 GPIO硬件简介 1.1、GPIO 【S5PV210有237个多功能IO口#xff0c;通过设置寄存器确定某个引脚用于输入输出或者其他特殊功能】 GPIO的英文全称为General-PurposeIO ports#xff0c;也就是通用IO接口。在嵌入式系统中常常有数量众多#xff0…TQ210 —— 点亮LED 1、S5PV210 GPIO硬件简介 1.1、GPIO 【S5PV210有237个多功能IO口通过设置寄存器确定某个引脚用于输入输出或者其他特殊功能】 GPIO的英文全称为General-PurposeIO ports也就是通用IO接口。在嵌入式系统中常常有数量众多但是结构却比较简单的外部设备/电路对这些设备/电路有的需要CPU为之提供控制手段有的则需要被CPU用做输入信号。而且许多这样的设备/电路只要求一位即只要有开/关两种状态就够了。比如控制某个LED灯亮与灭或者通过获取某个引脚的电平属性来达到判断外围设备的状态。对这些设备/电路的控制使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”即GPIO。接口至少有两个寄存器即“通用IO控制寄存器”与“通用IO数据寄存器”。数据寄存器的各位都直接引到芯片外部而对这种寄存器中每一位的作用即每一位的信号流通方向则可以通过控制寄存器中对应位独立地加以设置。比如可以设置某个引脚的属性为输入、输出或其他特殊功能。在实际的MCU中GPIO是有多种形式的。比如有的数据寄存器可以按照位寻址有些却不能按照位寻址这在编程时就要区分了。比如传统的8051系列就区分成可位寻址和不可位寻址两种寄存器。另外为了使用的方便很多MCU的 GPIO接口除必须具备两个标准寄存器外还提供上拉寄存器可以设置IO的输出模式是高阻还是带上拉的电平输出或者不带上拉的电平输出。这在电路设计中外围电路就可以简化不少。1.2、特性146个可中断通用控制GPIO32个可控外部中断237个多路复用IO口睡眠模式引脚状态可控除了GPH0/GPH1/GPH2/GPH3。2、GPIO寄存器 控制S5PV210的GPIO端口寄存器主要有三类 控制寄存器——GPxCON——配置GPIO输入输出功能 数据寄存器——GPxDAT——设置高低电平 上拉寄存器——GPxUP——确定是否使用内部上拉电阻 3、LED原理图 这里两个NPN三极管具有放大电流作用增大驱动能力只要给基极一个高电平三极管就可以导通产生大电流驱动LED点亮。 4、汇编点亮LED 要点亮LED1需要配置寄存器GPC0CON的[15:12]为0b0001使GPC0_3为输出模式同时配置寄存器GPC0DAT[3]1使GPC0_3引脚输出高电平。 要点亮LED2需要配置寄存器GPC0CON 的[19:16]为0b0001使 GPC0_4为输出模式同时配置寄存器GPC0DAT[4]1使GPC0_4引脚输出高电平。 三个文件led_on.S  addheader.c  Makefile /* led_on.S */ .global _start _start:ldr r0, 0xE0200060 /* GPC0CON寄存器*/ldr r1, 0x00001000 str r1, [r0] /* 设置GPC0_3为输出,GPC0[15:12] 0b0001 */ldr r0, 0xE0200064 /* GPC0DAT寄存器*/ldr r1, 0x00000008 str r1, [r0] /* 设置GPC0_3为高电平*/halt:b halt /*死循环*/ 为什么需要死循环CPU 一旦从某个地址运行它就会从这个地址往后依次取指运行当运行完我们的代码它不会停止还会往后继续取指运行但是后面的指令是未知的CPU运行后不知道会是什么结果可能正常执行也可能出现异常所以我们应该让CPU一直在那里死循环。 Makefile led_on.bin:led_on.oarm-linux-ld -Ttext 0xD0020010 -oled_on.elf $^arm-linux-objcopy -O binary led_on.elf $arm-linux-objdump -D led_on.elf led_on.disled_on.o :led_on.Sarm-linux-gcc -c $ -o $clean:rm *.o *.elf *.bin *.dis 1、arm-linux-gcc将start.S编译成start.o目标文件-c表示编译不链接-o跟随输出文件名。 2、arm-linux-ld 将start.o目标文件链接成elf文件格式-Ttext 0xD0020010表示程序运行的地址是0xD0020010其实程序可以在任何一个地址运行因为本源代码是位置无关码后面您会看到可以在内存0x30000000地址运行【TQ210内存0x20000000~0x40000000】。 3、arm-linux-objcopy将ELF格式的可执行文件转换为二进制文件即可以在开发板上执行的文件-O表示指定格式来输出文件这里是binary即二进制文件。 4、arm-linux-objdump 将ELF文件反汇编主要用于编译出错时对调试很有帮助-D表示反汇编所有段。 裸机可以使用SD卡烧和使用 u-boot 菜单栏或者u-boot命令行来烧写 // 要将led_on.bin烧写到TQ210中还需要要添加一个16字节的头信息。 #includestdio.h #includestring.h #includestdlib.h#defineIMG_SIZE 16 * 1024 #defineHEADER_SIZE 16intmain (int argc, char *argv[]) {FILE *fp;unsigned char*buffer;int bufferLen;int nbytes,fileLen;unsigned int checksum, count;int i;if (argc ! 3){printf(Usage: %s sourcefile destination file\n, argv[0]);return -1;}/* 分配16KByte的buffer,BL1最大为16KByte,并初始化为0*/buffer calloc(1, IMG_SIZE);if (!buffer){perror(Alloc bufferfailed!);return -1;}/* 打开源bin文件*/fp fopen(argv[1], rb);if( fp NULL){perror(source file openerror);free(buffer);return -1;}/* 获取源bin文件的长度*/fseek(fp, 0L, SEEK_END);fileLen ftell(fp);fseek(fp, 0L, SEEK_SET);/* 源bin文件不得超过(16K-16)Byte*/if (fileLen (IMG_SIZE -HEADER_SIZE)){fprintf(stderr, Source fileis too big( 16KByte)\n);free(buffer);fclose(fp);}/* 计算校验和*/i 0;checksum 0;while (fread(buffer HEADER_SIZE i, 1,1, fp)){checksum buffer[HEADER_SIZE i];}fclose(fp);/* 计算BL1的大小(BL1的大小包括BL1的头信息),并保存到buffer[0~3]中*/fileLen HEADER_SIZE;memcpy(buffer, fileLen, 4);// 将校验和保存在buffer[8~15]memcpy(buffer 8, checksum, 4);/* 打开目标文件*/fp fopen(argv[2], wb);if (fp NULL){perror(destination file openerror);free(buffer);return -1;}// 将buffer拷贝到目标bin文件中nbytes fwrite(buffer, 1, fileLen, fp);if (nbytes ! fileLen){perror(destination filewrite error);free(buffer);fclose(fp);return -1;}free(buffer);fclose(fp);return 0; } 首先编译 addheader.cgcc addheader.c -o addheader ./addheader led_on.bin 210.bin 将生成的210.bin文件通过SD或者tftp方式下载到TQ210开发板中。 5、烧写裸机程序 1、使用SD卡烧写 dd iflagdsync oflagdsync if210.bin of/dev/sdb seek1 表示输出文件为 210.bin输出文件到/dev/sdb设备文件在 linux 下是 在/dev/目录下此时 SD 卡在 Linux 下仅仅被看成是一个文件 seek1 表示烧写到扇区 1 Linux 读写磁盘设备最小单位是一个扇区。取出SD卡放入TQ210开发板拨动拨码开关为SD卡启动。 注意 /dev/sdb 是查阅 SD在 Linux虚拟机上的设备节点而设置的如果设备节点为/dev/sdc则需要修改为/dev/sdc插入 SD卡到 PC 后在 Linux虚拟机命令行执行 ls /dev/sd*命令查看到设备节点的情况。 2、使用u-boot菜单栏烧写 ipaddr开发板的IPserveripLinux的IP【设置好save保存一下】 tftp 3000000210.bin go30000000 6、用C和汇编混合编程 /* led_on.S*/ .global _start _start:blmain /* 跳转到C函数去执行*/ halt:bhalt /* 死循环 *//* main.c */ #define GPC0CON *((volatileunsigned int *)0xE0200060) #define GPC0DAT *((volatileunsigned int *)0xE0200064)void delay(volatile unsigned int t) {volatileunsigned int t2 0xFFFF;while(t--)for(; t2; t2--); }int main() {int toggle 0;GPC0CON ~(0xFF 12);GPC0CON | 0x11 12; //配置GPC0_3和GPC0_4为输出while(1){GPC0DAT ~(0x3 3); // 熄灭LED1和LED2if(toggle)GPC0DAT| 1 3; // 点亮LED1elseGPC0DAT| 1 4; // 点亮LED2toggle !toggle;delay(0x50000);}return 0; } 运行 C 语言需要栈为什么在 led_on.S 中没有设置栈S5PV210 上电运行 iROM 中的代码已经设置好栈栈顶地址为 0xD0037F80
http://www.yutouwan.com/news/259538/

相关文章:

  • 网站名是域名吗个人网站建设研究意义
  • 医疗器械网站怎么做最新wordpress漏洞
  • 晚上睡不着网站2021免费一个很好的个人网站开发
  • 南宁哪些公司专业做网站完整开发网站需要什么
  • 唯品会 一家专门做特卖的网站深圳seo教程
  • 网站建设名字推介网足球二手料
  • 做房产抵押网站需要什么手续深圳市建设行业门户网站
  • 校友网站 建设php个人网站源码
  • 网站建设都需要买什么东西租车公司
  • 网站备案代理做骗子曝光网站是否违法
  • 网站建设服务费账务处理网站改版意义
  • 韶关市建设与房地产信息网站厦门今天最新通知
  • 网站设计要学哪些做单页网站的软件
  • 介绍自己做的电影网站深圳 做网站 车公庙
  • 手机网站设计的项目描述网站后台管理系统一般用户名是什么
  • 网站技术培训班有哪些种类有没有好的网站
  • 企业网站建站模板做网站要学编程麽
  • 做aelogo动效有什么好的网站管理咨询公司ppt
  • 网站开发人员结构邢台网站制作有哪些
  • 怎样建设自己网站的后台当年的51网站
  • 象山县城乡和住房建设局网站淄博网站设计制作
  • 怎样做吧网站排名做上去网上推广怎么收费
  • 静态网站源码app源码网站
  • 做自己的网站好还是博客好两学一做 网站
  • 泰安东平县建设局网站织梦网站地图怎么做xml
  • 华强北 做网站站长之家官网登录入口
  • 做衣服网站网络营销课程培训价格
  • 网站出现404网站建设合同交什么印花税
  • 长安做外贸网站做搞机网站
  • 德阳房产网站建设天津高端网站建设企业