Tianfu Ma

Results 7 issues of Tianfu Ma

This project is licensed under APL, which allows commercial usage. In readme file, you put a link to Nokia HEIF library. However, that project limits the license to non-commercial usage...

市场上有一种SD NAND,深圳的芯天下、江波龙等公司有这种产品。 http://www.xtxtech.com/products.asp?sid=62 https://www.longsys.com/cn/product/t-flash/ 封装是类似SO8的LGA8封装,1.27mm pitch,直接贴在PCB上,信号是MMC接口,3.3V Only。对于低端嵌入式产品跑Linux是一个比NAND要方便很多的选择,比eMMC有显著的成本优势(容量也小很多)。 希望rkdeveloptool, upgrade_tool和idbloader能直接支持MMC烧录,这样量产、开发和省级的时候都方便很多。 谢谢。 ++++ 可能更多的工作是在idbloader里完成的,但是那个repo的issue关了,所以就写在这里了。

瑞芯提供了upgrade_tool和rkdeveloptool两个工具,用于通过rkusb下载emmc固件。 upgrade_tool实现了一个类似repl的界面,这个对于scripting很麻烦,需要动用expect或者对tty编程。 相对而言rkdeveloptool简单一点,但是仍然有这样一些问题: 1. exit code,比如ld命令即使没有枚举到设备,仍然返回0,这对scripting来说是个糟糕的设计。 2. gpt代码有bug,在rk3328上,8GB emmc,使用缺省的parameters写入的分区表,在linux内核启动后最后一个分区(rootfs分区)丢失; 3. ReadFlashInfo返回的emmc容量是MB单位的,不是以Byte为单位的; 4. 命令不接受pipe; 以上问题说明该工具设计上没有清晰分离机制和策略。仅仅针对emmc操作而言,必须的操作仅有: 1. 枚举; 2. 下载最初的bootloader; 3. 读取emmc信息,主要是容量; 4. LBA读写 5. RESET设备 应该有一个工具仅支持这几个操作的,有正确的exit code定义,支持pipe,其他的功能可以再写一层bash或其他语言脚本实现,这样使用上灵活很多。 需要支持pipe的一个原因是这样: 写入gpt是写入emmc的头部和尾部,但是rootfs的镜像,常见的情况是在某个LBA之后都是空的;对于写入的程序而言它可以先读一遍镜像文件找到最后一个非空的sector,然后只把这些pipe给rkdeveloptool即可,在使用A/B分区或者rootfs内系统较小的时候可节省不少烧录时间;当然目前也可以先把rootfs.img后面的0给trunc掉,但是这需要复制一大块文件,如果有pipe支持这个中间步骤是可以省掉的。 既然瑞芯已经提供了基于Linux平台的工具,在工具的设计上应该符合Linux命令的实现习惯,这样对社区开发者方便很多。在Linux上分区和文件系统的使用方式多种多样,只要提供机制,开发者可以自己实现烧录脚本和量产工具,对于瑞芯的BROM和boot-loader的设计来说,仅有idbloader, u-boot和trust是固定的,其他的分区和文件系统使用自由可以留给产品开发者。...

On Ubuntu 19.10 or Debian 10, where aarch64-linux-gnu-gcc version is 8.3. ``` In file included from drivers/mtd/spi/spi_flash.c:18: include/linux/log2.h:19:1: error: ignoring attribute ‘noreturn’ because it conflicts with attribute ‘const’ [-Werror=attributes] int...

![img_20171101_182436](https://user-images.githubusercontent.com/376881/32272062-73d7f200-bf37-11e7-9ff6-7bd70e408c72.jpg) For some jpg file, the `detectFile` function returns an error, such as following: ``` Error: JPEG image data, Exif standard: [TIFF image data, big-endian, direntries=13, datetime=2017:11:01 18:24:35, GPS-Data, model=Nexus...

on Ubuntu 18.04, openssl version is 1.1.0g and the source code won't compile. Furthermore, we are using node.js. tls.certEngine is not supported until node.js v10. However, node.js v10 uses openSSL...

为什么需要实现Event可以写一本书; 简单的说Event x State就是程序行为的完备数学定义;两者都是程序的Nature;简化的Event是轮循外部变量的语句;简化的State就在if/while等分支语句里;他们可以简化但不会没有; Event对于FUNK意味着什么呢? FUNK并非真正的Blocking;再次调用的时候,如果在恢复运行之前做一点小小的检查工作再决定是否继续,Well,就完全等价于Event模式下的EventLoop入口的GetEvent动作; 真正的代码可能写在两个不同的地方,一个是FUNK的goto之前;另一个是goto之后、再次调用sub-FUNK之前,两者用途和形式都会有区别;很可能Event会引起这一层状态机的路径变化,但也可能只有某个subFunk阻塞时关注某个Event; 设计上也有两个原则,一个是在全局的FUNK设计里引入Event机制,但这对那些不需要Event的FUNK来说可能会带来书写代码的负担; 这里还需要仔细考虑再做定夺;