本文共 2806 字,大约阅读时间需要 9 分钟。
为了确保系统的稳定性和功能性,我们需要对硬件和文件系统进行全面的测试。以下是主要测试内容和步骤说明。
我们可以通过以下方法获取芯片的内存大小:
def print_mem_free(): import gc print('ram total : ' + str(gc.mem_free() // 1024) + ' kb') gc.collect() 运行上述代码可以获取当前的内存使用情况。
首先,我们需要验证文件系统的总大小:
import osFLASH = '/flash'def print_flash_size(FLASH): statvfs_fields = ['bsize', 'frsize', 'blocks', 'bfree', 'bavail', 'files', 'ffree'] info = dict(zip(statvfs_fields, os.statvfs(FLASH))) print('flash total : ' + str(info['bsize'] * info['bfree'] // 1024) + ' kb') 运行 print_flash_size(FLASH) 可以查看闪存的总大小。
为了确保文件系统的格式化过程正确,我们可以执行以下验证:
def unit_test_fs_format(): os.flash_format()
运行上述函数后,重新调用 print_flash_size(FLASH) 查看文件系统的格式化结果。
我们需要验证目录操作的正确性:
def unit_test_fs_dir_mk_and_rm(FLASH): assert(0 == len(os.listdir(FLASH))) os.mkdir('test') os.rmdir('test') assert(0 == len(os.listdir(FLASH))) 运行该函数后,检查目录操作是否成功完成。
文件的读写和重命名操作需要进行详细验证:
def unit_test_fs_file_function(FLASH): name, info = 't.txt', b'0123456789ABCDEF' # 创建文件 few = open(name, "wb") few.write(info) #assert(os.stat(name)[6] == 0) # 可以在 menuconfig 中取消 cache 机制 print(os.stat(name)) # 文件应该存在了,但内容还未写入,此时则证明有 write cache 工作。 assert(name in os.listdir(FLASH)) few.close() # 检查文件是否存在,且文件大小为 len(info) 。 assert(os.stat(name)[6] == len(info)) # 确认文件读取 fer = open(name, "rb") assert(fer.read() == info) fer.close() # 确认 rename 工作 tmp = 'rename.txt' os.rename(name, tmp) assert(tmp in os.listdir(FLASH)) os.rename(tmp, name) assert(name in os.listdir(FLASH)) os.remove(name) assert(name not in os.listdir(FLASH))
运行该函数后,逐一验证文件操作是否正确完成。
为了确保文件操作的稳定性,我们需要进行以下测试:
def unit_test_fs_file(FLASH): name, info = 't.txt', b'0123456789ABCDEF' if (name in os.listdir(FLASH)): os.remove(name) few = open(name, "wb") few.write(info) few.close() # 测试内容 few = open(name, "ab") assert(few.read() == info) few.write(name) few.close() few = open(name, "ab") assert(few.read() == info + name) few.close() if (name in os.listdir(FLASH)): os.remove(name) # 边界检查 import time, gc count, tm = 0, time.ticks_ms() info = info * 10240 print(len(info), time.ticks_diff(time.ticks_ms(), tm)) gc.collect() try: few = open(name, "wb") while True: print(few.write(info)) count = count + 1 print(count * len(info)) print_flash_size(FLASH) few.close() except Exception as e: print(e) finally: print(count * len(info), time.ticks_diff(time.ticks_ms(), tm)) print_flash_size(FLASH) few.close() # 数据检查 # 写入重入
运行该函数后,逐一验证文件边界和重入操作是否正确完成。
转载地址:http://inbyz.baihongyu.com/