搜索
bottom↓
回复: 41

J-Link/CMSIS-DAP编程器(快速版)如何添加器件

  [复制链接]

出0入25汤圆

发表于 2019-2-26 21:05:30 | 显示全部楼层 |阅读模式

前面分享了J-Link和CMSIS-DAP编程器软件,
分享JLINK编程器,,快速版
分享CMSIS-DAP(DAPLink)编程器,,快速版!!
但其现在只支持有限的几种器件,,那么怎么添加其他器件支持呢?

我以新唐的M480单片机为例说明以下:

第一步:从Keil MDK的*.FLM文件中解析出烧写算法代码和信息
将 C:\Keil_v5\ARM\PACK\Nuvoton\NuMicro_DFP\1.3.1\Flash\M481_AP_512.FLM 文件拷贝到 JMCUProgFast\FlashAlgo 目录下,双击该目录下的 flash_algo.py 文件执行,会在该目录下生成 M481_AP_512.py

第二步:为想要添加的器件新建一个类
在 JMCUProgFast\device 目录下新建 NUM480.py 文件,并添加如下内容:
  1. #coding: utf-8
  2. from .flash import Flash
  3. import time

  4. class NUM480(object):
  5.     CHIP_CORE = 'Cortex-M4'

  6.     PAGE_SIZE = 1024 * 4
  7.     SECT_SIZE = 1024 * 4
  8.     CHIP_SIZE = 0x080000  # 512K

  9.     def __init__(self, jlink):
  10.         super(NUM480, self).__init__()
  11.         
  12.         self.jlink  = jlink

  13.         self.flash = Flash(self.jlink, NUM480_flash_algo)

  14.     def sect_erase(self, addr, size):
  15.         self.flash.Init(0, 0, 1)
  16.         for i in range(0, (size + self.SECT_SIZE - 1)//self.SECT_SIZE):
  17.             self.flash.EraseSector(addr + self.SECT_SIZE * i)
  18.         self.flash.UnInit(1)

  19.     def chip_write(self, addr, data):
  20.         data = data + [0xFF] * (self.PAGE_SIZE - len(data)%self.PAGE_SIZE)

  21.         self.sect_erase(addr, len(data))

  22.         self.flash.Init(0, 0, 2)
  23.         for i in range(0, len(data)//self.PAGE_SIZE):
  24.             self.flash.ProgramPage(addr + self.PAGE_SIZE * i, data[self.PAGE_SIZE*i : self.PAGE_SIZE*(i+1)])
  25.         self.flash.UnInit(2)

  26.     def chip_read(self, addr, size, buff):
  27.         data = self.jlink.read_mem(addr, size)

  28.         buff.extend([ord(x) for x in data])


  29. NUM480_flash_algo = {
  30.     'load_address' : 0x20000000,
  31.     'instructions' : [
  32.         0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA, 0x2A001E52, 0x4770D1F2,
  33.         0xBF00B501, 0x1E419800, 0x28009100, 0xBD08D1FA, 0x41F0E92D, 0x460F4606, 0x25644690, 0x49F72059,
  34.         0xF04F6008, 0xF04F0016, 0xF8C14180, 0xF04F0100, 0xF8C10088, 0xF04F0100, 0xF8D04080, 0xF0100100,
  35.         0xD1020F01, 0xE8BD2001, 0x48ED81F0, 0xF0406800, 0xF04F0004, 0xF8C14180, 0x46080200, 0x0204F8D0,
  36.         0x0004F040, 0x0204F8C1, 0x0080F04F, 0xFFC8F7FF, 0x49E548E4, 0xBF006008, 0x680048E4, 0x0F04F010,
  37.         0x48E3D0FA, 0xF0246804, 0xF0440407, 0xF04F0002, 0xF8C14180, 0xF44F0210, 0xF7FF7040, 0x48DDFFB1,
  38.         0xF0406800, 0x49DB0021, 0x46086008, 0xF04069C0, 0x61C80001, 0x68004608, 0x0F01F010, 0x2001D101,
  39.         0x48D4E7C1, 0xF0406800, 0x49D20040, 0x20006008, 0x4601E7B9, 0x48CFBF00, 0xF0106900, 0xD1FA0F01,
  40.         0x680048CC, 0x0021F020, 0x60104ACA, 0x69C04610, 0x0001F020, 0x48C661D0, 0xF0406800, 0xF04F0007,
  41.         0xF8C24280, 0xF04F0210, 0x47700000, 0xBF004601, 0x690048C0, 0x0F01F010, 0x48BED1FA, 0xF0406800,
  42.         0x4ABC0040, 0x20226010, 0xF02160D0, 0x60500003, 0x1F00F5B1, 0x48B8D101, 0x20016090, 0x61104AB5,
  43.         0x8F60F3BF, 0x48B3BF00, 0xF0106900, 0xD1FA0F01, 0x680048B0, 0x0F40F010, 0x48AED007, 0xF0406800,
  44.         0x4AAC0040, 0x20016010, 0x20004770, 0x4601E7FC, 0x48A8BF00, 0xF0106900, 0xD1FA0F01, 0x680048A5,
  45.         0x0040F040, 0x60104AA3, 0x60D02025, 0x60414610, 0x1F00F5B1, 0x48A0D101, 0x20016090, 0x61104A9D,
  46.         0x8F60F3BF, 0x489BBF00, 0xF0106900, 0xD1FA0F01, 0x68004898, 0x0F40F010, 0x4896D007, 0xF0406800,
  47.         0x4A940040, 0x20016010, 0x20004770, 0xB570E7FC, 0x460D4604, 0xE01A2300, 0x0023F834, 0x0C800480,
  48.         0x1AE8D10C, 0xD3092804, 0x0023F854, 0xFFBFF7FF, 0xD0010006, 0xBD704630, 0xE0081D1B, 0x0023F854,
  49.         0xFF84F7FF, 0xD0010006, 0xE7F44630, 0x42AB1C5B, 0x2000D3E2, 0xB570E7EF, 0x460B4604, 0x22004615,
  50.         0xF1034629, 0xF020000F, 0xBF00030F, 0x69004879, 0x0F01F010, 0x4877D1FA, 0xF0406800, 0x4E750040,
  51.         0xF0246030, 0x6070000F, 0x60F02027, 0x1C524610, 0x0020F851, 0x60304E71, 0xF1024610, 0xF8510201,
  52.         0x4E6C0020, 0x0084F8C6, 0xF1024610, 0xF8510201, 0x4E6B0020, 0x46106030, 0x0201F102, 0x0020F851,
  53.         0x0604F106, 0xF04F6030, 0x4E620001, 0xF1A36130, 0xE0290310, 0x4863BF00, 0xF0106800, 0xD1FA0F30,
  54.         0x1C524610, 0x0020F851, 0x60304E5C, 0xF1024610, 0xF8510201, 0x4E570020, 0x0084F8C6, 0x4859BF00,
  55.         0xF0106800, 0xD1FA0FC0, 0x1C524610, 0x0020F851, 0x60304E53, 0xF1024610, 0xF8510201, 0x4E4D0020,
  56.         0x008CF8C6, 0x0310F1A3, 0xD1D32B00, 0x4849BF00, 0xF0106900, 0xD1FA0F01, 0xBD702000, 0x4603B510,
  57.         0xF0201CC8, 0xBF000103, 0x69004842, 0x0F01F010, 0x4840D1FA, 0xF0406800, 0x4C3E0040, 0x20216020,
  58.         0xE01F60E0, 0x0003F023, 0x60604C3A, 0x60A06810, 0x61202001, 0x8F60F3BF, 0x4836BF00, 0xF0106900,
  59.         0xD1FA0F01, 0x68004833, 0x0F40F010, 0x4831D007, 0xF0406800, 0x4C2F0040, 0x20016020, 0x1D1BBD10,
  60.         0x1F091D12, 0xD1DD2900, 0xE7F72000, 0x47F0E92D, 0x460C4605, 0xF04F4616, 0x46C20800, 0x4825BF00,
  61.         0xF0106900, 0xD1FA0F01, 0x68004822, 0x0040F040, 0x60084920, 0xF0201CE0, 0xE0450403, 0x0DC005E8,
  62.         0xF5B4D10C, 0xD3097F00, 0x7700F44F, 0x0208EB06, 0x46284639, 0xFF2FF7FF, 0xE0164682, 0x0DC005E8,
  63.         0x2C10D10B, 0xF024D309, 0xEB06070F, 0x46390208, 0xF7FF4628, 0x4682FF20, 0x4627E007, 0x0208EB06,
  64.         0x46284639, 0xFF8AF7FF, 0x443D4682, 0x1BE444B8, 0x0F00F1BA, 0x2001D018, 0x87F0E8BD, 0x40000100,
  65.         0x40000200, 0x0008421E, 0x40000240, 0x40000250, 0x40000210, 0x4000C000, 0x0055AA03, 0x4000C080,
  66.         0x4000C088, 0x4000C0C0, 0xD1B72C00, 0xE8BD2000, 0xB51087F0, 0xF0231CCB, 0xBF000103, 0x691B4B2D,
  67.         0x0F01F013, 0x4B2BD1FA, 0xF043681B, 0x4C290340, 0x23006023, 0xE02460E3, 0x0303F020, 0x60634C25,
  68.         0x60A32300, 0x61232301, 0x8F60F3BF, 0x4B21BF00, 0xF013691B, 0xD1FA0F01, 0x681B4B1E, 0x0F40F013,
  69.         0x4B1CD006, 0xF043681B, 0x4C1A0340, 0xBD106023, 0x689B4B18, 0x42A36814, 0xE7F8D000, 0x1D121D00,
  70.         0x29001F09, 0xBF00D1D8, 0xB510E7F1, 0x48114603, 0xF0106E00, 0xD00C0F02, 0x6503480E, 0x65826541,
  71.         0x4C0C2001, 0xBF0065E0, 0x6E00480A, 0x0F01F010, 0x4808D1FA, 0xF0106E00, 0xD1010F04, 0xBD102002,
  72.         0x6E004804, 0x0F02F010, 0x2001D001, 0x2000E7F7, 0x0000E7F5, 0x4000C000, 0x00000000
  73.     ],

  74.     'pc_Init'            : 0x20000031,
  75.     'pc_UnInit'          : 0x200000F3,
  76.     'pc_EraseSector'     : 0x2000012D,
  77.     'pc_ProgramPage'     : 0x2000038D,
  78.     'pc_Verify'          : 0x20000453,
  79.     'pc_EraseChip'       : 0x12000001F,
  80.     'pc_BlankCheck'      : 0x12000001F,
  81.     'pc_Read'            : 0x12000001F,
  82.    
  83.     'static_base'        : 0x20000800,
  84.     'begin_data'         : 0x20000C00,
  85.     'begin_stack'        : 0x20002000,

  86.     'analyzer_supported' : False,

  87.     # Relative region addresses and sizes
  88.     'ro_start'           : 0x00000000,
  89.     'ro_size'            : 0x000004F8,
  90.     'rw_start'           : 0x000004F8,
  91.     'rw_size'            : 0x00000004,
  92.     'zi_start'           : 0x000004FC,
  93.     'zi_size'            : 0x00000000,

  94.     # Flash information
  95.     'flash_start'        : 0x00000000,
  96.     'flash_size'         : 0x00080000,
  97.     'flash_page_size'    : 0x00001000,
  98.     'sector_sizes': (
  99.         (0x00000, 0x01000),
  100.     )
  101. }
复制代码


你添加其他器件时也可以使用这个文件的内容作为模板,,需要修改的内容如下:
1、将文件中的 NUM480 替换成你的器件名称,将 CHIP_CORE = 'Cortex-M4' 根据你的器件的内核改成M0、M3、M4或M7
2、PAGE_SIZE = 1024 * 4 根据 M481_AP_512.py 文件中的 'flash_page_size'    : 0x00001000, 进行修正
3、SECT_SIZE = 1024 * 4 根据  M481_AP_512.py 文件中的 'sector_sizes': ((0x00000, 0x01000),) 进行修正
这里要注意下,有些单片机中sector-size有好几种,,比如STM32的sector大小有16k、64k、128k,,这种情况下用最小的即可,,无非是导致128k的扇区被重复多次擦除,,但不影响最终结果
4、CHIP_SIZE = 0x080000 修正成正确的Flash容量大小
5、将 M481_AP_512.py 中 flash_algo 中的内容拷贝到 NUM480.py 文件中的 NUM480_flash_algo 中

第三步、将新添加的器件添加进图形界面程序的下拉框中
打开 JMCUProgFast\device\__init__.py 文件,添加 import NUM480,然后在Devices = collections.OrderedDict中添加一行:('NUM480',      NUM480.NUM480),

就这么简单几步,,新器件就添加成功了


阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入25汤圆

 楼主| 发表于 2022-4-18 12:16:38 | 显示全部楼层

最近才发现,,原来 static_base 的值必须固定是”load_address + 0x20 + rw_start“,,不能是自己随意指定位置

之所以之前一直设置错误下载算法还能正常工作,,是因为大多数下载算法不使用全局变量

出0入0汤圆

发表于 2019-2-26 21:08:54 | 显示全部楼层
不错不错,赞一个

出0入0汤圆

发表于 2019-2-26 22:57:40 | 显示全部楼层
以后有空 port 个 py3 的 cli 版,提供一个思路:配置文件保存到按系列或者型号命名的 json 文件,再动态加载,资源消耗可以少一些,版本不至于太多

出0入0汤圆

发表于 2019-2-26 23:01:23 | 显示全部楼层
opensoure 的话,建议补充 LICENSE

出0入25汤圆

 楼主| 发表于 2019-2-26 23:08:34 | 显示全部楼层
一天的蓝 发表于 2019-2-26 22:57
以后有空 port 个 py3 的 cli 版,提供一个思路:配置文件保存到按系列或者型号命名的 json 文件,再动态加 ...


Windows下还是更喜欢用GUI,,Windows下命令行不如Linux好用

我github上开源的代码都是MIT协议,,也就是想怎么用就怎么用,没有任何限制

出0入0汤圆

发表于 2019-2-27 08:20:11 | 显示全部楼层
XIVN1987 发表于 2019-2-26 23:08
Windows下还是更喜欢用GUI,,Windows下命令行不如Linux好用

我github上开源的代码都是MIT协议,,也就 ...

感谢楼主分享,楼主好人!

出0入8汤圆

发表于 2019-2-27 08:33:23 | 显示全部楼层
谢谢分享,持续关注。

出0入0汤圆

发表于 2019-2-27 09:45:04 | 显示全部楼层
楼主python非常棒,对jlink研究已经非常深入。
有空把这些好好学习一下。

出0入0汤圆

发表于 2019-2-27 09:46:22 | 显示全部楼层

谢谢分享,持续关注。

出0入0汤圆

发表于 2019-2-27 10:02:53 | 显示全部楼层
这个可以。  老铁。  以后使用的到。

出0入8汤圆

发表于 2019-2-27 12:53:58 | 显示全部楼层
楼主厉害,我的可以运行MCUProg.py,但是flash_algo.py运行显示:

F:\Works\JMCUProgFast-master\FlashAlgo\flash
_algo.py", line 13, in <module>
    import jinja2
ImportError: No module named jinja2


jinja2是单独的模块吗?另外在家里安装的就不能运行MCUProg.py,不知为何?

出0入8汤圆

发表于 2019-2-27 12:54:17 | 显示全部楼层
XIVN1987 发表于 2019-2-26 23:08
Windows下还是更喜欢用GUI,,Windows下命令行不如Linux好用

我github上开源的代码都是MIT协议,,也就 ...


楼主厉害,我的可以运行MCUProg.py,但是flash_algo.py运行显示:

F:\Works\JMCUProgFast-master\FlashAlgo\flash
_algo.py", line 13, in <module>
    import jinja2
ImportError: No module named jinja2


jinja2是单独的模块吗?另外在家里安装的就不能运行MCUProg.py,不知为何?

出0入25汤圆

 楼主| 发表于 2019-2-27 13:34:46 | 显示全部楼层
huxiaoping 发表于 2019-2-27 12:54
楼主厉害,我的可以运行MCUProg.py,但是flash_algo.py运行显示:

F:\Works\JMCUProgFast-master\Flash ...

jinja2和elftools不是标准库,,需要自己安装,,用pip install jinja2 elftools即可

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-2-27 15:55:42 来自手机 | 显示全部楼层
谢谢分享。

出10入23汤圆

发表于 2019-2-28 11:13:11 | 显示全部楼层
这个还是太麻烦了,能不能直接从JFlash目录里掏出来?

出0入25汤圆

 楼主| 发表于 2019-2-28 11:52:18 | 显示全部楼层
zouzhichao 发表于 2019-2-28 11:13
这个还是太麻烦了,能不能直接从JFlash目录里掏出来?

这样虽然麻烦些,但更灵活、定制化更方便,

出0入0汤圆

发表于 2019-3-4 11:49:48 | 显示全部楼层
遇到一个奇怪问题,自己编译,总是提示没有安装 vc buildools,但我实际上已经安装了vc2015 buildtools,这是什么问题?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

 楼主| 发表于 2019-3-4 13:45:06 | 显示全部楼层
kazuyuki 发表于 2019-3-4 11:49
遇到一个奇怪问题,自己编译,总是提示没有安装 vc buildools,但我实际上已经安装了vc2015 buildtools,这 ...


这是在给自己写的包编写setup.py安装文件吗??

为什么还需要vc buildtools??代码里有C++代码吗??

没搞过这个,,不懂

出0入0汤圆

发表于 2019-3-4 15:40:20 | 显示全部楼层
XIVN1987 发表于 2019-3-4 13:45
这是在给自己写的包编写setup.py安装文件吗??

为什么还需要vc buildtools??代码里有C++代码吗??

在安装支持包的时候,要下载elftools包,而这个包下载的是源码,需要自己编译。所以出现这个错误。

出0入25汤圆

 楼主| 发表于 2019-3-4 17:42:28 | 显示全部楼层
kazuyuki 发表于 2019-3-4 15:40
在安装支持包的时候,要下载elftools包,而这个包下载的是源码,需要自己编译。所以出现这个错误。 ...


虽然代码里是 “from elftools.elf.elffile import ELFFile”,但是需要安装的包叫“pyelftools”,而不是“elftools”,,

pyelftools包是纯python代码,,安装时不会调用vc buildtools,,
elftools包里有C代码,,安装时需要调用vc buildtools,,

这算是开源软件的一个小问题吧,,好名字会被别人给占用了

出0入0汤圆

发表于 2019-3-4 21:15:02 | 显示全部楼层
XIVN1987 发表于 2019-3-4 17:42
虽然代码里是 “from elftools.elf.elffile import ELFFile”,但是需要安装的包叫“pyelftools”,而不 ...

先谢谢LZ的热心解惑!

我直接运行mcuprog.py,提示缺少“ConfigParser”模块,但我已经安装了的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

 楼主| 发表于 2019-3-4 21:50:07 | 显示全部楼层
kazuyuki 发表于 2019-3-4 21:15
先谢谢LZ的热心解惑!

我直接运行mcuprog.py,提示缺少“ConfigParser”模块,但我已经安装了的


JMCUProgFast是Python2写的,,不能用Python3.7执行,,

当然,你也可以把它移植到Python3.7上,,工作量应该也不大,,

出0入0汤圆

发表于 2019-3-4 22:51:56 | 显示全部楼层
谢谢分享,赞一个

出0入0汤圆

发表于 2019-4-7 18:39:40 | 显示全部楼层
有没有方法能自动检测mcu的断开和连接么

出0入0汤圆

发表于 2019-4-22 12:46:52 | 显示全部楼层
谢谢分享,赞一个

出140入115汤圆

发表于 2019-5-15 15:49:03 | 显示全部楼层
按照楼主方法,添加器件成功



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-6-20 16:01:09 | 显示全部楼层
好东西,学习了

出0入0汤圆

发表于 2019-8-23 09:53:35 | 显示全部楼层
楼主,我提取出FLM文件的内容了,但是不会打包生成可运行的EXE文件,你方便帮我添加进去吗?对PY一点也不会,都是M0内核的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-8-23 21:05:10 来自手机 | 显示全部楼层
Mark jlink flashgo

出0入104汤圆

发表于 2019-10-1 15:40:14 | 显示全部楼层

Mark jlink flashgo

出0入104汤圆

发表于 2019-10-11 09:16:38 | 显示全部楼层
请问下楼主,最后是怎么打包的?

出0入25汤圆

 楼主| 发表于 2019-10-11 09:57:18 | 显示全部楼层
kevincoooool 发表于 2019-10-11 09:16
请问下楼主,最后是怎么打包的?


pyinstaller打包

出0入104汤圆

发表于 2019-10-11 10:01:46 | 显示全部楼层

只需要在目录下输入pyinstaller -F MCUProg.py 吗  我这样打包出来的exe打不开 闪退

出0入104汤圆

发表于 2019-10-11 10:03:52 | 显示全部楼层

在pycharm里可以运行  但是点击写入后就返回这个

Traceback (most recent call last):
  File "D:/GitHub/JMCUProg/MCUProg.py", line 76, in on_btnWrite_clicked
    self.jlk = jlink.JLink(self.linDLL.text().encode('gbk'), device.Devices[self.cmbMCU.currentText()].CHIP_CORE)
  File "D:\GitHub\JMCUProg\jlink.py", line 8, in __init__
    self.jlk = ctypes.cdll.LoadLibrary(dllpath)
  File "D:\Python27\lib\ctypes\__init__.py", line 444, in LoadLibrary
    return self._dlltype(name)
  File "D:\Python27\lib\ctypes\__init__.py", line 366, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 193] %1 �������� Win32

出0入25汤圆

 楼主| 发表于 2019-10-11 10:05:03 | 显示全部楼层
kevincoooool 发表于 2019-10-11 10:01
只需要在目录下输入pyinstaller -F MCUProg.py 吗  我这样打包出来的exe打不开 闪退 ...


可能是缺少资源文件,,比如 MCUProg.ui

你把生成的MCUProg.exe放到 JMCUProg目录下执行试试

或者是配置文件setting.ini损坏了,,把这个文件删除再运行试试

出0入25汤圆

 楼主| 发表于 2019-10-11 10:08:54 | 显示全部楼层
kevincoooool 发表于 2019-10-11 10:03
在pycharm里可以运行  但是点击写入后就返回这个

Traceback (most recent call last):


你的Python是32位版本的还是64位版本的??

你的JLinkARM.dll是32位的还是64位的??这两个版本要一致

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入104汤圆

发表于 2019-10-11 10:59:46 | 显示全部楼层
XIVN1987 发表于 2019-10-11 10:08
你的Python是32位版本的还是64位版本的??

你的JLinkARM.dll是32位的还是64位的??这两个版本要一致

大佬我可以把文件传上来您帮我打包一下吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入104汤圆

发表于 2019-10-11 11:40:44 | 显示全部楼层
已成功打包!原来楼主用的全是32位的= =

出0入25汤圆

 楼主| 发表于 2019-10-11 11:52:01 | 显示全部楼层
kevincoooool 发表于 2019-10-11 11:40
已成功打包!原来楼主用的全是32位的= =


.py源文件没有32位、64位的区别

关键是你的python.exe文件和JLinkARM.dll文件必须同时是32位,或者同时是64位,,得一致,,

出0入0汤圆

发表于 2022-1-16 10:00:16 | 显示全部楼层
在这方面你的贡献很多,谢谢你

出0入25汤圆

 楼主| 发表于 2022-1-16 12:31:53 | 显示全部楼层
advarx21ic 发表于 2022-1-16 10:00
在这方面你的贡献很多,谢谢你


不客气,,能帮到有需要的坛友就好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 08:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表