팁 : EasyFlash v4.1 이후 EasyFlash를 기반으로 새로 설계 및 개발 된 FlashDB 오픈 소스 프로젝트가 공식적으로 시작되었습니다. 타이밍 데이터베이스, 다중 파티션 관리 및 다중 데이터베이스 인스턴스와 같은 새로 통합 된 기능이있어 전체 성능을 어느 정도 향상 시켰습니다. 다음에 오신 것을 환영합니다 : https://github.com/armink/flashdb. 동시에 기존 EasyFlash는 계속 유지됩니다.
EasyFlash는 오픈 소스 경량 임베디드 플래시 메모리 라이브러리로, 개발자가 플래시 메모리를 기반으로 일반적인 응용 프로그램 개발을보다 쉽게 구현할 수 있습니다. 스마트 홈, 웨어러블, 산업 통제, 의료, 사물 인터넷 및 전원 공간 저장 기능이 필요한 기타 제품에 매우 적합합니다. 리소스 사용량이 매우 낮고 다양한 MCU 온칩 메모리를 지원합니다. 이 라이브러리는 주로 세 가지 실용적인 기능을 포함합니다.
EasyFlash는 제품의 매개 변수 설정 또는 실행되는 제품 로그 와 같은 정보의 전원 다운 스토리지 기능을 실현할뿐만 아니라 제품 매개 변수를 처리하는 데있어 개발자의 어려움을 줄이고 나중에 업그레이드 할 때 제품의 확장 성을 추가, 삭제, 수정 및 쿼리하는 간단한 방법을 캡슐화 할 수 있습니다. 플래시를 NOSQL (비 관계형 데이터베이스) 모델로 바꾸는 작은 키 값 스토리지 데이터베이스로 플래시를 만듭니다.
이 라이브러리는 일반적으로 사용되는 IAP (Application Programming) 기능의 인터페이스를 캡슐화하고 CRC32 확인을 지원하며 부트 로더 및 응용 프로그램 업그레이드를 지원합니다.
파일 시스템이없는 소규모 제품에 이상적이므로 개발자가 시스템 충돌 또는 충돌의 원인을 신속하게 찾아서 쉽게 찾을 수 있습니다. 동시에 EasyLogger (EasyLogger와 함께 원활한 인터페이스를 제공하는 오픈 소스 초경량, 고성능 C 로그 라이브러리)와 함께 사용되며 C 로그의 플래시 저장 기능을 쉽게 구현합니다.
현재 ENG 함수의 두 가지 주요 모드가 있습니다. 하나는 v4.0으로 가져온 NG 모드이고 다른 하나는 v3.0을 계속하는 레거시 모드입니다.
해당 소스 코드 파일은 다음과 같습니다.
ef_env.c
EasyFlash는 2019 년 봄 축제 이후 4 년 이상 반복 후 V4.0 버전을 출시했으며 많은 개발자의 요구와 제안과 결합했습니다. 이 버전의 ENT 함수는 NG (차세대) 모드입니다. 이것은 다음과 같은 새로운 기능을 갖춘 완전히 리팩토링 된 새 버전입니다.
v4.0 디자인 및 내부 원리, v4.0 마이그레이션 가이드 등, 다음 문서 섹션을 계속 읽으십시오.
참고 : STM32L4 온칩 플래시와 같은 일부 플래시는 역순으로 쓸 수 없으므로 NG 모드를 사용할 수 없습니다. 이 경우 v3.0의 레거시 모드를 사용하는 것이 좋습니다.
해당 소스 코드 파일은
ef_env_legacy.c및ef_env_legacy_wl.c입니다
레거시 모드에는 마모 균형 및 전원 다운 보호 기능이 있습니다. v 4.0 ng 모드와 비교하여 레거시 모드를 사용하려면 각 환경을 일시적으로 캐시하고 마지막으로 Save 인터페이스를 호출하고 섹터를 균일하게 지우인 다음 플래시에 저장하는 추가 RAM 공간이 필요합니다.
| v4.0 ng 모드 | v3.0 레거시 모드 | |
|---|---|---|
| RAM 자원 사용 | 낮은 | 높은 |
| 플래시 포괄적 인 지원 | 일부 플래시가 제한됩니다 : 예를 들어 STM32L4 칩 | 더 포괄적입니다 |
| GC 쓰레기 수집이 필요합니까? | GC가 필요하므로 GC가 트리거 될 때 쓰기 속도가 느려집니다. | 불필요한 |
| 값 유형 제한 | 제한 없는 | 더 나은 문자열 유형을 지원합니다 |
| 전원 다운 보호 | 지원하다 | 지원하다 |
| 마모 균형 | 지원하다 | 지원하다 |
| 증분 업그레이드 | 지원하다 | 지원하다 |
最低要求: ROM: 6K bytes RAM: 0.1K bytes
현재 하드웨어 플랫폼에는 stm32f10x 및 stm32f4xx 시리즈 온칩 플래시 및 SFUD 기반)가 포함되어 있으며 저자의 제품이 사용하는 플랫폼이기도합니다. 다른 플랫폼의 포팅은 어렵지 않습니다. 프로젝트 설계가 시작될 때 모든 플랫폼의 적응성 문제 (64 비트 제외)가 고려되었으므로 모든 포팅 인터페이스가 예약되었습니다. 포트를 위해서는 지우기, 쓰기, 읽기 및 인쇄 기능을 실현하려면 파일 easyflashportef_port.c 파일 만 수정하면됩니다.
Fork 및 Pull Request (Github | Oschina | Coding)에 오신 것을 환영합니다. 이 오픈 소스 프로젝트가 훌륭하다고 생각되면 프로젝트 홈페이지의 오른쪽 상단에 있는 별을 클릭하여 도움이 필요한 친구에게 추천 할 수 있습니다.
다음 그림은 콘솔 (터미널)을 통해 환경 변수를 호출하는 일반적인 인터페이스입니다. 다음 프로세스를 보여줍니다.이 프로세스는 모두 응용 프로그램 계층의 직접 통화를 지원합니다.
temp "의 환경 변수를 생성하고 123 의 값을 할당합니다.456 으로 수정하고 저장 및 재시작;
다음 그림은 콘솔을 통해 IAP 소프트웨어를 업그레이드하는 프로세스를 보여줍니다. 라이브러리와 함께 제공되는 IAP 함수 인터페이스를 사용하고 데모는 직렬 포트 + ymodem 프로토콜을 사용합니다. CAN, 485, 이더넷 및 기타 버스를 통해 원격 네트워크 업데이트를 실현할 수도 있습니다.

아래의 프로세스는 콘솔을 통해 로그를 출력하고 출력 로그를 플래시에 저장하는 것입니다. 마지막으로 저장된 로그를 다시 시작하고 읽고 마지막으로 플래시 로그를 지우십시오.

docszhapi.mddocszhport.mddocszhv4_migrate.mddocszhdesign.md문서를 읽은 후 사용하십시오.

EasyFlash가 문제를 해결하면 위의 QR 코드를 스캔하여 커피 한 잔을 초대 할 수도 있습니다.
MIT 오픈 소스 프로토콜을 사용하십시오. 자세한 내용은 프로젝트에서 라이센스 파일의 내용을 읽으십시오.
EasyFlash는 오픈 소스 가벼운 임베디드 플래시 메모리 라이브러리입니다. MCU (마이크로 제어 장치)에 대한 편리한 응용 프로그램 인터페이스를 제공합니다. 개발자는 플래시 메모리를 기반으로보다 효율적이고 일반적인 응용 프로그램 개발을 달성 할 수 있습니다. 라이브러리는 현재 세 가지 유용한 기능을 제공합니다.
EasyFlash는 설정 매개 변수 또는 실행중인 로그 및 전원을 낮추고 싶은 기타 정보를 저장할 수 있습니다. 추가, 삭제, 수정 및 쿼리 메소드가 포함되어 있습니다. 개발자가 제품 매개 변수를 처리하고 업그레이드 후 제품이 확장 성이 우수한 지 확인하는 데 도움이됩니다. 플래시를 작은 NOSQL (비 관계형 데이터베이스) 모델 및 키 값 저장 데이터베이스로 바꿉니다.
라이브러리는 IAP (응용 프로그램 내 프로그래밍) 기능 공통 인터페이스를 캡슐화합니다. CRC32 체크섬을 지원합니다. 부트 로더 및 응용 프로그램 업그레이드를 지원하는 동안
파일 시스템 제품이없는 소규모에 매우 적합합니다. 개발자는 시스템이 충돌하거나 동결 될 때 문제를 쉽게 찾아서 쿼리 할 수 있습니다. Easylogger (저에게 오픈 소스를 제공하는 슈퍼 라이트 웨이트, 고성능 C 로그 라이브러리를 사용할 수 있습니다. EasyFlash와 함께 원활한 인터페이스를 동시에 제공 할 수 있습니다. 따라서 로그를 플래시에 저장하는 것은 매우 쉽습니다.
Minimum : ROM: 6K bytes RAM: 0.2K bytes
하드웨어 플랫폼은 SPI 플래시, stm32f10x 및 stm32f4xx 시리즈의 온칩 플래시로 포팅되었습니다. 이것들은 내 제품 플랫폼입니다. 나머지 플랫폼 포팅 난이도는 거의 없습니다. 포트하려면 easyflashportef_port.c 파일 만 수정하십시오. 지우기, 쓰기, 읽기, 인쇄 기능을 구현하십시오.
Fork and Pull Request (Github | Oschina | Coding)에 모두를 환영합니다. 이 오픈 소스 프로젝트가 대단하다고 생각한다면. 프로젝트 홈페이지의 오른쪽 상단에 스타를 눌러 더 많은 친구들에게 추천 할 수 있습니다.
아래 그림은 콘솔 (터미널)에서 ENV의 공통 인터페이스를 호출합니다. 이 인터페이스는 호출 된 응용 프로그램 계층에 의해 지원됩니다.
temp 이고 가치는 123 입니다.456 으로 변경하고 저장, 재부팅;
아래 그림은 IAP의 콘솔을 통해 소프트웨어를 업그레이드하는 프로세스를 보여줍니다. 이 라이브러리는 IAP 기능 인터페이스와 함께 제공됩니다. 직렬 포트 + ymodem 프로토콜 모드를 사용합니다. 온라인 업그레이드까지 CAN, 485, 이더넷 버스를 통해 달성 할 수 있습니다.

다음 그림은 콘솔을 통한 로그 프로세스의 출력입니다. 로그는 실시간으로 플래시되도록 저장됩니다. 그런 다음 보드가 재부팅되고 로그 백을 플래시에서 다시 읽습니다. 마지막으로 로그가 지워집니다.

모든 문서는 docsen 폴더에 있습니다. 문서를 포팅하고 사용하기 전에 문서를 읽으 십시오.
MIT 오픈 소스 라이센스를 사용하여 프로젝트 라이센스 파일을 읽으십시오.