diff --git a/bioloid_controller_cm510/CMakeLists.txt b/bioloid_controller_cm510/CMakeLists.txt
index 1921211d4e0e4ea74b8631f6556982e005be067a..f9a5fe1af1b823868ea44b10181bd177412598d7 100644
--- a/bioloid_controller_cm510/CMakeLists.txt
+++ b/bioloid_controller_cm510/CMakeLists.txt
@@ -129,7 +129,9 @@ add_library(${PROJECT_NAME} src/bioloid_controller_cm510.cpp
                             ${BIOLOID_FW_PATH}/controllers/src/buzzer.c
                             # communications modules
                             ${BIOLOID_FW_PATH}/communications/src/dynamixel.c
+                            ${BIOLOID_FW_PATH}/communications/src/memory.c
                             # main application module
+#                            ${ProjectPath}/cm510_vision.c
                             ${ProjectPath}/stairs.c
                             # AVR simulation modules
                             src/sim/avr_delay.c
diff --git a/bioloid_controller_cm510/include/sim/avr/eeprom.h b/bioloid_controller_cm510/include/sim/avr/eeprom.h
new file mode 100644
index 0000000000000000000000000000000000000000..f192459ece967a0df5382cd0389f277459a33e75
--- /dev/null
+++ b/bioloid_controller_cm510/include/sim/avr/eeprom.h
@@ -0,0 +1,17 @@
+#ifndef _AVR_EEPROM_H
+#define _AVR_EEPROM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <avr/io.h>
+
+uint8_t eeprom_read_byte(const uint8_t *p);
+void eeprom_write_byte(uint8_t *p, uint8_t value);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bioloid_controller_cm510/src/sim/avr_eeprom.c b/bioloid_controller_cm510/src/sim/avr_eeprom.c
new file mode 100644
index 0000000000000000000000000000000000000000..d9b904bfdf3427cdeb54b00a001ff7933ba57747
--- /dev/null
+++ b/bioloid_controller_cm510/src/sim/avr_eeprom.c
@@ -0,0 +1,15 @@
+#include "memory.h"
+
+#define EEPROM_BASE    0x00810000
+
+uint8_t eeprom_mem[2*EEPROM_SIZE]={0xFF};
+
+uint8_t eeprom_read_byte(const uint8_t *p)
+{
+  return eeprom_mem[(int)(p-EEPROM_BASE)];
+}
+
+void eeprom_write_byte(uint8_t *p, uint8_t value)
+{
+  eeprom_mem[(int)(p-EEPROM_BASE)]=value;
+}