ESP8266 Memory Map
来自Jack's Lab
(版本间的差异)
(→地址空间映射) |
(→编译布局) |
||
| 第1行: | 第1行: | ||
== 编译布局 == | == 编译布局 == | ||
| + | <pre> | ||
| + | #include <stdio.h> | ||
| + | #include <fcntl.h> /* File Control Definitions */ | ||
| + | #include <termios.h> /* POSIX Terminal Control Definitions */ | ||
| + | #include <unistd.h> /* UNIX Standard Definitions */ | ||
| + | #include <errno.h> /* ERROR Number Definitions */ | ||
| + | #include <sys/ioctl.h> /* ioctl() */ | ||
| + | main(void) | ||
| + | { | ||
| + | int fd; /*File Descriptor*/ | ||
| + | int status; | ||
| + | fd = open("/dev/ttyUSB0",O_RDWR | O_NOCTTY ); //Opening the serial port | ||
| + | |||
| + | ioctl(fd,TIOCMGET,&status); /* GET the State of MODEM bits in Status */ | ||
| + | status |= TIOCM_RTS; // Set the RTS pin | ||
| + | ioctl(fd, TIOCMSET, status); | ||
| + | |||
| + | getchar(); //To view the change in status pins before closing the port | ||
| + | |||
| + | close(fd); | ||
| + | } | ||
| + | |||
| + | int disableRTS () | ||
| + | { | ||
| + | char fd, ret, flags; | ||
| + | |||
| + | // open device | ||
| + | if ((fd = open("/dev/cu.mydevice", O_RDWR | O_NDELAY)) < 0) | ||
| + | { | ||
| + | fprintf(stderr, "failed to open device"); | ||
| + | return -1; | ||
| + | } | ||
| + | |||
| + | // Get the current state of the bits | ||
| + | ioctl(fd, TIOCMGET, &flags); | ||
| + | fprintf(stderr, "Flags are %x.\n", flags); | ||
| + | |||
| + | flags &= ~TIOCM_RTS; // Disable the RTS bit | ||
| + | ret = ioctl(fd, TIOCMSET, &flags); | ||
| + | |||
| + | if (ret == -1) | ||
| + | fprintf(stderr, "TIOCMSET failed\n"); | ||
| + | else | ||
| + | fprintf(stderr, "TIOCMSET succeeded. flags: %x.\n", flags); | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | </pre> | ||
<br><br> | <br><br> | ||
2015年12月7日 (一) 21:35的版本
1 编译布局
#include <stdio.h>
#include <fcntl.h> /* File Control Definitions */
#include <termios.h> /* POSIX Terminal Control Definitions */
#include <unistd.h> /* UNIX Standard Definitions */
#include <errno.h> /* ERROR Number Definitions */
#include <sys/ioctl.h> /* ioctl() */
main(void)
{
int fd; /*File Descriptor*/
int status;
fd = open("/dev/ttyUSB0",O_RDWR | O_NOCTTY ); //Opening the serial port
ioctl(fd,TIOCMGET,&status); /* GET the State of MODEM bits in Status */
status |= TIOCM_RTS; // Set the RTS pin
ioctl(fd, TIOCMSET, status);
getchar(); //To view the change in status pins before closing the port
close(fd);
}
int disableRTS ()
{
char fd, ret, flags;
// open device
if ((fd = open("/dev/cu.mydevice", O_RDWR | O_NDELAY)) < 0)
{
fprintf(stderr, "failed to open device");
return -1;
}
// Get the current state of the bits
ioctl(fd, TIOCMGET, &flags);
fprintf(stderr, "Flags are %x.\n", flags);
flags &= ~TIOCM_RTS; // Disable the RTS bit
ret = ioctl(fd, TIOCMSET, &flags);
if (ret == -1)
fprintf(stderr, "TIOCMSET failed\n");
else
fprintf(stderr, "TIOCMSET succeeded. flags: %x.\n", flags);
return 0;
}
2 地址空间映射
/* RAM */ #define RAM_BASE 0x3FFE8000 #define RAM_SIZE 0x00018000 // Size: 98304 bytes #define RAM_BIOS_DATA_BASE 0x3FFFC000 // ROM-XTOS system data RAM. Size: 16384 bytes /* IRAM */ #define IRAM_BASE 0x40100000 #define IRAM_SIZE 0x00008000 // Size: 32768 bytes /* FLASH */ #define FLASH_BASE 0x40200000 #define FLASH_MIN_SIZE 0x00080000 // 512 KB #define FLASH_MAX_SIZE 0x01000000 // 16 MB #define FLASH_CACHE_MAX_SIZE 0x100000 // Size of Cached Flash /* dport (io1) section */ #define DPORT_BASE 0x3ff00000 /* io2 section */ #define IO2_BASE 0x3ff20000 // Size: 6144 bytes /* io3 section */ #define UART0_BASE 0x60000000 #define SPI1_BASE 0x60000100 #define SPI0_BASE 0x60000200 #define GPIO_BASE 0x60000300 #define HDRF_BASE 0x60000500 #define TIMER_BASE 0x60000600 #define RTC_BASE 0x60000700 #define IOMUX_BASE 0x60000800 #define WDT_BASE 0x60000900 #define SDIO_BASE 0x60000A00 #define SCL_BASE 0x60000B00 #define SAR_BASE 0x60000D00 #define I2S_BASE 0x60000E00 #define UART1_BASE 0x60000F00 #define RTC_RAM_BASE 0x60001000 // Size: 1024 bytes #define RTC_MEM_BASE 0x60001100 /* io4 section */ #define IO4_BASE 0x60009800 // Size: 1536 bytes