裸机相关
Spark!
路人
展开
-
C语言内部机制分析—基于S3C2440c语言点灯
代码汇编之前的汇编代码如下//这些只是汇编的语法而已,没什么好记的.text.global _start_start:/*设置内存:sp(堆栈指针) 栈*/ ldr sp, = 4096 //nand// ldr sp, = 0x40000000 + 4096/*nor启动*//*调用main函数*/ bl main /*跳转过去执行main,并且把返回地址保存起来*/halt: b halt流程如下1、设置栈2、调用main,并把返回地址保存在lr中main.ci原创 2020-12-28 19:12:41 · 340 阅读 · 0 评论 -
S3C2440c语言汇编传参点灯
这篇博文讨论调用者怎么传参数给被调用者目录编写代码现象反汇编分析编写代码led.cvoid delay(volatile int d){ while (d--);}int led_on(int which){ unsigned int *pGPFCON = (unsigned int *)0x56000050; unsigned int *pGPFDAT = (unsigned int *)0x56000054; if (which == 4) { /* 配置GPF4为输出原创 2020-12-28 19:42:16 · 274 阅读 · 0 评论 -
S3C2440使用bin文件机器码点灯
修改bin文件机器码点灯S3C2440芯片手册导读编程bin文件机器码ARM手册导读立即数的表示计算修改的立即数bin文件机器码修改烧写运行总结S3C2440芯片手册导读https://blog.csdn.net/qq_28258885/article/details/111461640这次我们先点亮另外一个LED灯,于是先阅读芯片手册这次配置LED2,那么我们将GPFCON的[11,10]设置成01,也就是0x400编程/**点亮LED:GPF4*/.text //表明它是代码段原创 2020-12-23 16:14:41 · 388 阅读 · 2 评论 -
反汇编解析S3C2440汇编点灯
代码首先回顾代码/**点亮LED:GPF4*/.text //表明它是代码段.global _start_start:/*配置GPF4为输出引脚*把0x100写到地址0x56000050上,熄灭led*/ ldr r1, =0x56000050 /*将这个地址存放到r1中*/ ldr r0, =0x100 /*或者使用 mov r0, #0x100 将0x100放入r0 */ str r0, [r1] /*将r0的值写入到r1的地址中*//*设置GPF4输出原创 2020-12-23 14:13:48 · 248 阅读 · 0 评论 -
S3C2440汇编点灯
如何点灯步骤如下1、看原理图确定控制LED的引脚2、看主芯片手册确定如何设置/控制引脚这里JZ2440的芯片,就是S3C24403、写程序主芯片引脚输出高电平或低电平就可以改变LED状态我们不关心GPIO引脚输出的逻辑电压,只关心高电平或低电平主芯片输出的两种情况第一种此时主芯片输出3.3V电压,点亮LED输出0V电压,熄灭LED第二种此时主芯片输出0V电压,点亮LED输出3.3V电压,熄灭LED引脚驱动能力不足的情况有可能有的引脚能够发出的最原创 2020-12-22 16:23:27 · 514 阅读 · 0 评论 -
CPU的统一编址空间
CPU发送地址给内存控制器,它能够将地址发送给SDRAM和NOR FLASH而SDRAM和NOR FLASH的地址是属于同一个范围的如果要访问 NAND FLASH控制器呢CPU就要把地址写道NAND FLASH控制器当中,由它来控制片选引脚。然后将地址从地址线上发送给NAND FLASH。NAND FLASH不和SDRAM、NOR FLASH在同一区域。不属于CPU的统一编址空间可以这么理解:SDRAM、NOR FLASH是CPU的儿子,CPU能直接访问NAND FLASH是CPU的孙子原创 2020-12-17 19:31:30 · 616 阅读 · 0 评论 -
为什么不在windows学习单片机
1、深度不够Windows底下有很好的图形界面单片机开发软件,如keil、MDK等。它们封装了很多技术细节,如: 你只会从mian函数开始编写代码,却不知道上电后第一条代码如何执行; 你可以编写终端处理函数,但是不知道它是怎么被调用的; 你不知道程序怎么从Flash上被读入内存; 也不知道内存是怎么划分使用的,不知道栈在哪堆在哪 当你想裁剪程序降低对Flash、内存的使用时,你却无从下手 当你新建一个文件时,它被自动添加到工厂,但其中的机理你完全不懂2、基于arm+l..原创 2020-12-16 21:31:24 · 278 阅读 · 0 评论 -
类似内存的接口——ram-like
目录片选引脚CS内存控制器是否需要我们手动设置片选引脚?内存控制器是如何知道地址对应哪个片选引脚呢?内存的计算读写位宽不同位宽外设的接线方式16位32位接线总结如何确定访问地址内存控制器的时序nWAIT等待信号读的时序写的时序时序参数的设置网卡的参数要求SDRAM的参数要求首先看这个芯片这是一个网卡的芯片片选引脚接到了nGCS4片选引脚CS地址线、数据线上接有众多设备,怎样做到只访问其中一个而避免其余的收到影响?每一个芯片都有单独的片选引脚CS(chip select),低电平触发。要访问一个原创 2020-12-16 20:25:42 · 831 阅读 · 1 评论 -
SDRAM为什么要使用LnWBE引脚
SDRAM比一般的内存如NOR Flash更加复杂当nSRAS变为低电平时,表示发出的是行地址当nSCAS变为低电平时,表示发出的是列地址也就是说,它要分别发送行地址和列地址。并起来才能访问此外还有两个引脚需要注意我们这块SDRAM,一次访问就是32位。如果只想写里面的某个字节该怎么办?让LnWBE(write bit enable)变为低电平,如果它是高电平,那么写操作就不会影响对应的字节。LnWBE0表示低8位LnWBE1表示高8位这是另外两条线共4条线,表示32位L原创 2020-12-16 20:24:38 · 306 阅读 · 0 评论 -
不同位宽外设的接线方式
不同位宽外设的接线方式不同位宽外设的接线方式16位32位总结16位以NOR FLASH为例2440的CPU认为,一个地址对应一个字节NOR FLASH认为,一个地址对应两个字节那么这之间的矛盾该怎么协调呢假设2440的CPU要访问地址3的一个字节由于NOR FLASH是16个字节,一个地址对应两个字节所以2440的CPU会把2和3这一块一起取出来要读第一个单元,然后内存控制器再把地址3挑出来给CPU 然后CPU发送3 连接2440的地址线addr0、addr1、addr2分别原创 2020-12-16 17:36:32 · 820 阅读 · 0 评论