CAAM for computing incremental CRC

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

CAAM for computing incremental CRC

631 次查看
mastupristi
Senior Contributor I

Hello,

Given that I don't want to/can't use the SDK (see this post: https://community.nxp.com/t5/MCUXpresso-SDK/errors-in-code-of-SDK-for-RT1170/m-p/2328115/highlight/t...)

I can create descriptors to have CAAM calculate the correct CRC.
I have the following four functions:

  • initialize
  • update
  • finalize
  • Init/Finalize

A typical descriptor is:

InitializeUpdateFinalize
  1.  HEADER
  2.  KEY (set the polynomial)
  3.  OPERATION (init)
  4.  FIFO LOAD (load data)
  5.  STORE (context)
  6.  HALT
  1.  HEADER
  2.  KEY (set the polynomial)
  3.  OPERATION (Update)
  4. LOAD (context)
  5.  FIFO LOAD (load data)
  6.  STORE (context)
  7.  HALT
  1.  HEADER
  2.  KEY (set the polynomial)
  3.  OPERATION (Finalize)
  4. LOAD (context)
  5.  FIFO LOAD (load data)
  6.  STORE (crc)
  7.  HALT

 

What I really can't seem to handle well is the fact that both `initialize` and `finalize` have to provide data.

There isn't a single CRC software library that has such a requirement. For example, the code generated by pycrc doesn't require data for `init` and `fin`.

That said, there are contexts in which it is practically impossible to do so (without having to buffer something, which consumes RAM and ties up the processor, thereby losing some of the advantage gained from using CAAM).

I'm referring, for example, to serialization using Protobuf (nanopb). Since we don't want to use tens of kilobytes of RAM, we'd like to work in-stream.
So I call pb_encode(), and this calls a callback of mine, passing me a portion of the serialized data to be stored incrementally in non-volatile memory, and on which I want to calculate the CRC. However, I can’t know which call will be the last one. I’ll only know that after I exit pb_encode(), but by that point I won’t have any more data to process.

So the question is:
Is there really no way to avoid having to provide data to `Initialize`, and especially to `finalize`?

 

best regards

Max

标记 (2)
0 项奖励
回复
4 回复数

485 次查看
Kan_Li
NXP TechSupport
NXP TechSupport

Hi @mastupristi ,

 

Yes , it is possible to implement as you want to, please kindly refer to CAAM_CRC(), especially the caam_crc_schedule_input_data() for details.

 

Hope that helps,

 

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 项奖励
回复

321 次查看
mastupristi
Senior Contributor I

Hi @Kan_Li 

this still does not answer my question.

You are pointing me to `CAAM_CRC()` / `caam_crc_schedule_input_data()`, which is an SDK implementation choice. I am not asking how the SDK was written.

I am asking something much more specific and low-level:

Does the CAAM hardware allow a descriptor for CRC `INIT` and/or `FINALIZE` without a data FIFO LOAD command (or with a valid zero-data alternative)?

My table in the first post was meant to make exactly this point clear.

So please clarify this precise point:

  • for `OPERATION = INIT`, can the descriptor be valid without input data?
  • for `OPERATION = FINALIZE`, can the descriptor be valid without input data?
  • if yes, please show the descriptor sequence
  • if no, please state clearly that CAAM requires data for those stages

What I need is an answer about the hardware descriptor capabilities, not a reference to the SDK implementation.

Best regards,
Max

0 项奖励
回复

534 次查看
Kan_Li
NXP TechSupport
NXP TechSupport

Hi @mastupristi ,

 

Yes, actually it depends on how you implement, and you may refer to our SDK CAAM CRC driver code , which only requires data input for the update stage.

 

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 项奖励
回复

524 次查看
mastupristi
Senior Contributor I

Hi @Kan_Li 

What I am asking is specifically a low-level CAAM question.

I am not asking about the SDK API flow.
I want to understand whether the CAAM hardware itself allows building descriptors whose CRC OPERATION is:

  • INIT, with no input data
  • UPDATE, with input data
  • FINALIZE, with no new input data

In other words, is there a valid descriptor sequence where CAAM can start and, especially, finalize a CRC only from the previously saved context/state, without requiring a FIFO load with new external data?

That is the point I am trying to clarify.

A reference to the SDK driver does not really answer this, because my question is whether the HW/descriptor format itself supports such a flow.

If this is possible, a minimal descriptor-level example would be very helpful.

 

regards

Max

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2336633%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E8%AE%A1%E7%AE%97%E5%A2%9E%E9%87%8F%20CRC%20%E7%9A%84%20CAAM%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2336633%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3C%2FP%3E%3CP%3E%E9%89%B4%E4%BA%8E%E6%88%91%E4%B8%8D%E6%83%B3%2F%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8%20SDK%EF%BC%88%E8%AF%B7%E5%8F%82%E9%98%85%E6%9C%AC%E5%B8%96%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FMCUXpresso-SDK%2Ferrors-in-code-of-SDK-for-RT1170%2Fm-p%2F2328115%2Fhighlight%2Ftrue%23M5447%22%20target%3D%22_blank%22%3E%EF%BC%9Ahttps%3A%2F%2Fcommunity.nxp.com%2Ft5%2FMCUXpresso-SDK%2Ferrors-in-code-of-SDK-for-RT1170%2Fm-p%2F2328115%2Fhighlight%2Ftrue%23M5447%EF%BC%89%3C%2FA%3E%3C%2FP%3E%3CP%3E%E6%88%91%E5%8F%AF%E4%BB%A5%E5%88%9B%E5%BB%BA%E6%8F%8F%E8%BF%B0%E7%AC%A6%EF%BC%8C%E8%AE%A9%20CAAM%20%E8%AE%A1%E7%AE%97%E5%87%BA%E6%AD%A3%E7%A1%AE%E7%9A%84%20CRC%E3%80%82%3CBR%20%2F%3E%E6%88%91%E6%9C%89%E4%BB%A5%E4%B8%8B%E5%9B%9B%E7%A7%8D%E5%8A%9F%E8%83%BD%EF%BC%9A%3C%2FP%3E%3CUL%3E%3CLI%3E%E5%88%9D%E5%A7%8B%E5%8C%96%3C%2FLI%3E%3CLI%3E%E6%9B%B4%E6%96%B0%3C%2FLI%3E%3CLI%3E%E5%AE%A1%E5%AE%9A%3C%2FLI%3E%3CLI%3E%E5%88%9D%E5%A7%8B%E5%8C%96%2F%E6%9C%80%E7%BB%88%E7%A1%AE%E5%AE%9A%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3EA%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%B8%E5%9E%8B%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%8F%8F%E8%BF%B0%E7%AC%A6%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%98%AF%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3A%3C%2FSPAN%3E%3C%2FP%3E%3CTABLE%20class%3D%22lia-align-left%22%20border%3D%221%22%20width%3D%22100%25%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%20style%3D%22text-align%20%3A%20left%3B%22%3E%3CTBODY%3E%3CTR%3E%3CTD%20width%3D%2233.333333333333336%25%22%3E%3CSTRONG%3E%E5%88%9D%E5%A7%8B%E5%8C%96%3C%2FSTRONG%3E%3C%2FTD%3E%3CTD%20width%3D%2233.333333333333336%25%22%3E%3CSTRONG%3E%E6%9B%B4%E6%96%B0%3C%2FSTRONG%3E%3C%2FTD%3E%3CTD%20width%3D%2233.333333333333336%25%22%3E%3CSTRONG%3E%E5%AE%9A%E7%A8%BF%3C%2FSTRONG%3E%3C%2FTD%3E%3C%2FTR%3E%3CTR%3E%3CTD%20width%3D%2233.333333333333336%25%22%3E%3COL%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%A0%87%E9%A2%98%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%B3%E9%94%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E8%AE%BE%E7%BD%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%A4%9A%E9%A1%B9%E5%BC%8F%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%A4%9A%E9%A1%B9%E5%BC%8F%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E8%BF%90%E8%A1%8C%EF%BC%88%E5%90%AF%E5%8A%A8%EF%BC%89%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CFONT%20color%3D%22%23800000%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%88%E8%BF%9B%E5%85%88%E5%87%BA%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%95%B0%E6%8D%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FFONT%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%AD%98%E5%82%A8%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E4%B8%8A%E4%B8%8B%E6%96%87%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%81%9C%E6%AD%A2%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FOL%3E%3C%2FTD%3E%3CTD%20width%3D%2233.333333333333336%25%22%3E%3COL%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%A0%87%E9%A2%98%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%B3%E9%94%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E8%AE%BE%E7%BD%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%A4%9A%E9%A1%B9%E5%BC%8F%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%A4%9A%E9%A1%B9%E5%BC%8F%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E8%A1%8C%E5%8A%A8%EF%BC%88%E6%9B%B4%E6%96%B0%EF%BC%89%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%EF%BC%88%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%89%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%88%E8%BF%9B%E5%85%88%E5%87%BA%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%95%B0%E6%8D%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%AD%98%E5%82%A8%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E4%B8%8A%E4%B8%8B%E6%96%87%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%81%9C%E6%AD%A2%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FOL%3E%3C%2FTD%3E%3CTD%20width%3D%2233.333333333333336%25%22%3E%3COL%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%A0%87%E9%A2%98%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%B3%E9%94%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E8%AE%BE%E7%BD%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%A4%9A%E9%A1%B9%E5%BC%8F%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%A4%9A%E9%A1%B9%E5%BC%8F%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%93%8D%E4%BD%9C%EF%BC%88%E6%9C%80%E7%BB%88%E7%A1%AE%E5%AE%9A%EF%BC%89%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%EF%BC%88%E4%B8%8A%E4%B8%8B%E6%96%87%EF%BC%89%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CFONT%20color%3D%22%23800000%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%85%88%E8%BF%9B%E5%85%88%E5%87%BA%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%8A%A0%E8%BD%BD%3C%2FSPAN%3E%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E6%95%B0%E6%8D%AE%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FFONT%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%AD%98%E5%82%A8%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3Ecrc%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E)%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20class%3D%22%22%3E%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E%3CSPAN%20class%3D%22%22%3E%E5%81%9C%E6%AD%A2%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FOL%3E%3C%2FTD%3E%3C%2FTR%3E%3C%2FTBODY%3E%3C%2FTABLE%3E%3CBR%20%2F%3E%3CP%3E%E6%88%91%E4%BC%BC%E4%B9%8E%E7%9C%9F%E7%9A%84%E6%97%A0%E6%B3%95%E5%BE%88%E5%A5%BD%E5%9C%B0%E5%A4%84%E7%90%86%20%60initialize%60%20%E5%92%8C%20%60finalize%60%20%E9%83%BD%E5%BF%85%E9%A1%BB%E6%8F%90%E4%BE%9B%E6%95%B0%E6%8D%AE%E8%BF%99%E4%B8%80%E4%BA%8B%E5%AE%9E%E3%80%82%3C%2FP%3E%3CP%3E%E6%B2%A1%E6%9C%89%E4%B8%80%E4%B8%AA%20CRC%20%E8%BD%AF%E4%BB%B6%E5%BA%93%E6%9C%89%E8%BF%99%E6%A0%B7%E7%9A%84%E8%A6%81%E6%B1%82%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8Cpycrc%20%E7%94%9F%E6%88%90%E7%9A%84%E4%BB%A3%E7%A0%81%E4%B8%8D%E9%9C%80%E8%A6%81%20%60init%60%20%E5%92%8C%20%60fin%60%20%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82%3C%2FP%3E%3CP%3E%E5%B0%BD%E7%AE%A1%E5%A6%82%E6%AD%A4%EF%BC%8C%E5%9C%A8%E6%9F%90%E4%BA%9B%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E6%88%91%E4%BB%AC%E5%AE%9E%E9%99%85%E4%B8%8A%E8%BF%98%E6%98%AF%E6%97%A0%E6%B3%95%E5%81%9A%E5%88%B0%E8%BF%99%E4%B8%80%E7%82%B9%EF%BC%88%E5%9C%A8%E4%B8%8D%E7%BC%93%E5%86%B2%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E7%BC%93%E5%86%B2%E4%BC%9A%E6%B6%88%E8%80%97%20RAM%20%E5%B9%B6%E5%8D%A0%E7%94%A8%E5%A4%84%E7%90%86%E5%99%A8%EF%BC%8C%E4%BB%8E%E8%80%8C%E5%A4%B1%E5%8E%BB%E4%BD%BF%E7%94%A8%20CAAM%20%E6%89%80%E8%8E%B7%E5%BE%97%E7%9A%84%E9%83%A8%E5%88%86%E4%BC%98%E5%8A%BF%EF%BC%89%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E4%BE%8B%E5%A6%82%EF%BC%8C%E6%88%91%E6%8C%87%E7%9A%84%E6%98%AF%E4%BD%BF%E7%94%A8%20Protobuf%20(nanopb)%20%E8%BF%9B%E8%A1%8C%E5%BA%8F%E5%88%97%E5%8C%96%E3%80%82%E7%94%B1%E4%BA%8E%E6%88%91%E4%BB%AC%E4%B8%8D%E6%83%B3%E4%BD%BF%E7%94%A8%E6%95%B0%E5%8D%81%20KB%20%E7%9A%84%20RAM%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%88%91%E4%BB%AC%E5%B8%8C%E6%9C%9B%E5%9C%A8%E6%B5%81%E5%86%85%E5%B7%A5%E4%BD%9C%E3%80%82%3CBR%20%2F%3E%E6%89%80%E4%BB%A5%E6%88%91%E8%B0%83%E7%94%A8%20pb_encode%20()%EF%BC%8C%E8%BF%99%E4%BC%9A%E8%B0%83%E7%94%A8%E6%88%91%E7%9A%84%E5%9B%9E%E8%B0%83%EF%BC%8C%E5%B0%86%E5%BA%8F%E5%88%97%E5%8C%96%E6%95%B0%E6%8D%AE%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E4%BC%A0%E9%80%92%E7%BB%99%E6%88%91%EF%BC%8C%E8%BF%99%E4%BA%9B%E6%95%B0%E6%8D%AE%E5%B0%86%E4%BB%A5%E5%A2%9E%E9%87%8F%E6%96%B9%E5%BC%8F%E5%AD%98%E5%82%A8%E5%9C%A8%E9%9D%9E%E6%98%93%E5%A4%B1%E6%80%A7%E5%AD%98%E5%82%A8%E5%99%A8%E4%B8%AD%EF%BC%8C%E6%88%91%E6%83%B3%E5%9C%A8%E5%85%B6%E4%B8%AD%E8%AE%A1%E7%AE%97%20CRC%E3%80%82%E4%B8%8D%E8%BF%87%EF%BC%8C%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%E5%93%AA%E6%AC%A1%E9%80%9A%E8%AF%9D%E4%BC%9A%E6%98%AF%E6%9C%80%E5%90%8E%E4%B8%80%E6%AC%A1%E3%80%82%E6%88%91%E5%8F%AA%E6%9C%89%E5%9C%A8%E9%80%80%E5%87%BA%20pb_encode()%20%E5%90%8E%E6%89%8D%E8%83%BD%E7%9F%A5%E9%81%93%EF%BC%8C%E4%BD%86%E9%82%A3%E6%97%B6%E6%88%91%E5%B7%B2%E7%BB%8F%E6%B2%A1%E6%9C%89%E6%95%B0%E6%8D%AE%E8%A6%81%E5%A4%84%E7%90%86%E4%BA%86%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%E9%82%A3%E4%B9%88%E9%97%AE%E9%A2%98%E6%9D%A5%E4%BA%86%EF%BC%9A%3CBR%20%2F%3E%E7%9C%9F%E7%9A%84%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E9%81%BF%E5%85%8D%E5%90%91%20%22%E5%88%9D%E5%A7%8B%E5%8C%96%22%EF%BC%8C%E5%B0%A4%E5%85%B6%E6%98%AF%E5%90%91%20%22%E6%9C%80%E7%BB%88%E7%A1%AE%E5%AE%9A%20%22%E6%8F%90%E4%BE%9B%E6%95%B0%E6%8D%AE%E5%90%97%EF%BC%9F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3CP%3E%E6%9C%80%E5%A4%A7%E5%80%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2339881%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CAAM%20for%20computing%20incremental%20CRC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2339881%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F59276%22%20target%3D%22_blank%22%3E%40Kan_Li%3C%2FA%3E%3C%2FP%3E%3CP%3E%E6%88%91%E9%97%AE%E7%9A%84%E6%98%AF%E4%B8%80%E4%B8%AA%E5%85%B7%E4%BD%93%E7%9A%84%E4%BD%8E%E7%BA%A7%20CAAM%20%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E9%97%AE%E7%9A%84%E4%B8%8D%E6%98%AF%20SDK%20API%20%E6%B5%81%E7%A8%8B%E3%80%82%3CBR%20%2F%3E%E6%88%91%E6%83%B3%E4%BA%86%E8%A7%A3%20CAAM%20%E7%A1%AC%E4%BB%B6%E6%9C%AC%E8%BA%AB%E6%98%AF%E5%90%A6%E5%85%81%E8%AE%B8%E6%9E%84%E5%BB%BA%20CRC%20OPERATION%20%E4%B8%BA%E7%9A%84%E6%8F%8F%E8%BF%B0%E7%AC%A6%EF%BC%9A%3C%2FP%3E%3CUL%3E%3CLI%3EINIT%EF%BC%8C%E6%97%A0%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%3C%2FLI%3E%3CLI%3E%E6%9B%B4%E6%96%B0%EF%BC%8C%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%3C%2FLI%3E%3CLI%3E%E6%9C%80%E7%BB%88%E7%A1%AE%E5%AE%9A%EF%BC%8C%E6%B2%A1%E6%9C%89%E6%96%B0%E7%9A%84%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E6%8D%A2%E5%8F%A5%E8%AF%9D%E8%AF%B4%EF%BC%8C%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E7%A7%8D%E6%9C%89%E6%95%88%E7%9A%84%E6%8F%8F%E8%BF%B0%E7%AC%A6%E5%BA%8F%E5%88%97%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%AE%A9%20CAAM%20%E4%BB%85%E4%BB%8E%E5%85%88%E5%89%8D%E4%BF%9D%E5%AD%98%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%2F%E7%8A%B6%E6%80%81%E5%BC%80%E5%A7%8B%EF%BC%8C%E5%B0%A4%E5%85%B6%E6%98%AF%E6%9C%80%E7%BB%88%E5%AE%8C%E6%88%90%20CRC%EF%BC%8C%E8%80%8C%E4%B8%8D%E9%9C%80%E8%A6%81%E7%94%A8%E6%96%B0%E7%9A%84%E5%A4%96%E9%83%A8%E6%95%B0%E6%8D%AE%E8%BF%9B%E8%A1%8C%20FIFO%20%E5%8A%A0%E8%BD%BD%EF%BC%9F%3C%2FP%3E%3CP%3E%E8%BF%99%E5%B0%B1%E6%98%AF%E6%88%91%E8%A6%81%E6%BE%84%E6%B8%85%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%3CP%3E%E5%BC%95%E7%94%A8%20SDK%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%B9%B6%E4%B8%8D%E8%83%BD%E7%9C%9F%E6%AD%A3%E5%9B%9E%E7%AD%94%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%8C%E5%9B%A0%E4%B8%BA%E6%88%91%E7%9A%84%E9%97%AE%E9%A2%98%E6%98%AF%20HW%2FDescriptor%20%E6%A0%BC%E5%BC%8F%E6%9C%AC%E8%BA%AB%E6%98%AF%E5%90%A6%E6%94%AF%E6%8C%81%E8%BF%99%E6%A0%B7%E7%9A%84%E6%B5%81%E7%A8%8B%E3%80%82%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%E6%9C%89%E5%8F%AF%E8%83%BD%EF%BC%8C%E6%8F%90%E4%BE%9B%E4%B8%80%E4%B8%AA%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84%E6%8F%8F%E8%BF%B0%E7%AC%A6%E7%BA%A7%E7%A4%BA%E4%BE%8B%E5%B0%86%E9%9D%9E%E5%B8%B8%E6%9C%89%E5%B8%AE%E5%8A%A9%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E6%AD%A4%E8%87%B4%E9%97%AE%E5%80%99%3C%2FP%3E%3CP%3E%E6%9C%80%E5%A4%A7%E5%80%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2339774%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CAAM%20for%20computing%20incremental%20CRC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2339774%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F124967%22%20target%3D%22_blank%22%3E%40mastupristi%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83%E6%88%91%E4%BB%AC%E7%9A%84%20SDK%20CAAM%20CRC%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%AE%83%E5%8F%AA%E9%9C%80%E8%A6%81%E5%9C%A8%E6%9B%B4%E6%96%B0%E9%98%B6%E6%AE%B5%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E7%A5%9D%E6%82%A8%E6%84%89%E5%BF%AB%EF%BC%8C%3CBR%20%2F%3EKan%3C%2FP%3E%0A%3CP%3E%3CBR%20%2F%3E-------------------------------------------------------------------------------%3CBR%20%2F%3E%E6%B3%A8%EF%BC%9A%3CBR%20%2F%3E-%20%E5%A6%82%E6%9E%9C%E6%9C%AC%E5%B8%96%E5%9B%9E%E7%AD%94%E4%BA%86%E6%82%A8%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E8%AF%B7%E7%82%B9%E5%87%BB%22%E6%A0%87%E8%AE%B0%E6%AD%A3%E7%A1%AE%22%20%E6%8C%89%E9%92%AE%E3%80%82%E8%B0%A2%E8%B0%A2%EF%BC%81%3CBR%20%2F%3E-%20%E6%88%91%E4%BB%AC%E4%BC%9A%E5%9C%A8%E6%9C%80%E5%90%8E%E4%B8%80%E6%AC%A1%E5%8F%91%E5%B8%96%E5%90%8E%E7%9A%84%207%20%E5%91%A8%E5%86%85%E8%B7%9F%E8%B8%AA%E4%B8%BB%E9%A2%98%EF%BC%8C%E4%B9%8B%E5%90%8E%E7%9A%84%E5%9B%9E%E5%A4%8D%E5%B0%86%E8%A2%AB%E5%BF%BD%E7%95%A5%3CBR%20%2F%3E%E5%A6%82%E6%9E%9C%E6%82%A8%E4%BB%A5%E5%90%8E%E6%9C%89%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98%EF%BC%8C%E8%AF%B7%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E6%96%B0%E4%B8%BB%E9%A2%98%E5%B9%B6%E5%8F%82%E8%80%83%E5%B7%B2%E5%85%B3%E9%97%AD%E7%9A%84%E4%B8%BB%E9%A2%98%E3%80%82%3CBR%20%2F%3E-------------------------------------------------------------------------------%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2340908%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CAAM%20for%20computing%20incremental%20CRC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2340908%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F124967%22%20target%3D%22_blank%22%3E%40mastupristi%3C%2FA%3E%E3%80%81%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E6%98%AF%E7%9A%84%EF%BC%8C%E5%8F%AF%E4%BB%A5%E6%8C%89%E6%82%A8%E7%9A%84%E8%A6%81%E6%B1%82%E5%AE%9E%E7%8E%B0%EF%BC%8C%E8%AF%B7%E5%8F%82%E9%98%85%20CAAM_CRC()%EF%BC%8C%E5%B0%A4%E5%85%B6%E6%98%AF%3CSPAN%3Ecaam_crc_schedule_input_data()%3C%2FSPAN%3E%EF%BC%8C%E4%BA%86%E8%A7%A3%E8%AF%A6%E6%83%85%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CSPAN%3E%E5%B8%8C%E6%9C%9B%E5%AF%B9%E4%BD%A0%E6%9C%89%E6%89%80%E5%B8%AE%E5%8A%A9%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E7%A5%9D%E6%82%A8%E6%84%89%E5%BF%AB%EF%BC%8C%3CBR%20%2F%3EKan%3C%2FP%3E%0A%3CP%3E%3CBR%20%2F%3E-------------------------------------------------------------------------------%3CBR%20%2F%3E%E6%B3%A8%EF%BC%9A%3CBR%20%2F%3E-%20%E5%A6%82%E6%9E%9C%E6%9C%AC%E5%B8%96%E5%9B%9E%E7%AD%94%E4%BA%86%E6%82%A8%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E8%AF%B7%E7%82%B9%E5%87%BB%22%E6%A0%87%E8%AE%B0%E6%AD%A3%E7%A1%AE%22%20%E6%8C%89%E9%92%AE%E3%80%82%E8%B0%A2%E8%B0%A2%EF%BC%81%3CBR%20%2F%3E-%20%E6%88%91%E4%BB%AC%E4%BC%9A%E5%9C%A8%E6%9C%80%E5%90%8E%E4%B8%80%E6%AC%A1%E5%8F%91%E5%B8%96%E5%90%8E%E7%9A%84%207%20%E5%91%A8%E5%86%85%E8%B7%9F%E8%B8%AA%E4%B8%BB%E9%A2%98%EF%BC%8C%E4%B9%8B%E5%90%8E%E7%9A%84%E5%9B%9E%E5%A4%8D%E5%B0%86%E8%A2%AB%E5%BF%BD%E7%95%A5%3CBR%20%2F%3E%E5%A6%82%E6%9E%9C%E6%82%A8%E4%BB%A5%E5%90%8E%E6%9C%89%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98%EF%BC%8C%E8%AF%B7%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E6%96%B0%E4%B8%BB%E9%A2%98%E5%B9%B6%E5%8F%82%E8%80%83%E5%B7%B2%E5%85%B3%E9%97%AD%E7%9A%84%E4%B8%BB%E9%A2%98%E3%80%82%3CBR%20%2F%3E-------------------------------------------------------------------------------%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2346435%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20CAAM%20for%20computing%20incremental%20CRC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2346435%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F59276%22%20target%3D%22_blank%22%3E%40Kan_Li%3C%2FA%3E%3C%2FP%3E%3CP%3E%E8%BF%99%E4%BB%8D%E7%84%B6%E6%B2%A1%E6%9C%89%E5%9B%9E%E7%AD%94%E6%88%91%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%3CP%3E%E6%82%A8%E5%B0%86%E6%88%91%E5%BC%95%E5%90%91%20%60CAAM_CRC()%60%20%2F%20%60caam_crc_schedule_input_data()%60%EF%BC%8C%E8%BF%99%E6%98%AF%20SDK%20%E7%9A%84%E5%AE%9E%E7%8E%B0%E9%80%89%E6%8B%A9%E3%80%82%E6%88%91%3CSTRONG%3E%E4%B8%8D%E6%98%AF%3C%2FSTRONG%3E%E5%9C%A8%E9%97%AE%20SDK%20%E6%98%AF%E5%A6%82%E4%BD%95%E7%BC%96%E5%86%99%E7%9A%84%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E9%97%AE%E7%9A%84%E6%98%AF%E6%9B%B4%E5%85%B7%E4%BD%93%E3%80%81%E6%9B%B4%E4%BD%8E%E7%BA%A7%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSTRONG%3ECAAM%20%E7%A1%AC%E4%BB%B6%E6%98%AF%E5%90%A6%E5%85%81%E8%AE%B8%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%95%B0%E6%8D%AE%20FIFO%20LOAD%20%E5%91%BD%E4%BB%A4%EF%BC%88%E6%88%96%E6%9C%89%E6%95%88%E7%9A%84%E9%9B%B6%E6%95%B0%E6%8D%AE%E6%9B%BF%E4%BB%A3%E5%91%BD%E4%BB%A4%EF%BC%89%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%B8%BA%20CRC%20%60INIT%60%20%E5%92%8C%2F%E6%88%96%20%60FINALIZE%60%20%E6%8F%90%E4%BE%9B%E6%8F%8F%E8%BF%B0%E7%AC%A6%EF%BC%9F%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%E6%88%91%E5%9C%A8%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%B8%96%E5%AD%90%E4%B8%AD%E7%9A%84%E8%A1%A8%E6%A0%BC%E6%AD%A3%E6%98%AF%E4%B8%BA%E4%BA%86%E8%AF%B4%E6%98%8E%E8%BF%99%E4%B8%80%E7%82%B9%E3%80%82%3C%2FP%3E%3CP%3E%E5%9B%A0%E6%AD%A4%EF%BC%8C%E8%AF%B7%E6%BE%84%E6%B8%85%E8%BF%99%E4%B8%80%E7%82%B9%EF%BC%9A%3C%2FP%3E%3CUL%3E%3CLI%3E%E5%AF%B9%E4%BA%8E%20%22OPERATION%20%3D%20INIT%22%EF%BC%8C%E6%8F%8F%E8%BF%B0%E7%AC%A6%3CSTRONG%3E%E5%9C%A8%E6%B2%A1%E6%9C%89%3C%2FSTRONG%3E%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88%EF%BC%9F%3C%2FLI%3E%3CLI%3E%E5%AF%B9%E4%BA%8E%20%22OPERATION%20%3D%20FINALIZE%22%EF%BC%8C%E6%8F%8F%E8%BF%B0%E7%AC%A6%3CSTRONG%3E%E5%9C%A8%E6%B2%A1%E6%9C%89%3C%2FSTRONG%3E%E8%BE%93%E5%85%A5%E6%95%B0%E6%8D%AE%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88%EF%BC%9F%3C%2FLI%3E%3CLI%3E%E5%A6%82%E6%9E%9C%E6%98%AF%EF%BC%8C%E8%AF%B7%E6%98%BE%E7%A4%BA%E6%8F%8F%E8%BF%B0%E7%AC%A6%E5%BA%8F%E5%88%97%3C%2FLI%3E%3CLI%3E%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%EF%BC%8C%E8%AF%B7%E6%98%8E%E7%A1%AE%E8%AF%B4%E6%98%8E%20CAAM%20%E8%A6%81%E6%B1%82%E6%8F%90%E4%BE%9B%E8%BF%99%E4%BA%9B%E9%98%B6%E6%AE%B5%E7%9A%84%E6%95%B0%E6%8D%AE%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E6%88%91%E9%9C%80%E8%A6%81%E7%9A%84%E6%98%AF%E5%85%B3%E4%BA%8E%3CSTRONG%3E%E7%A1%AC%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6%E5%8A%9F%E8%83%BD%3C%2FSTRONG%3E%E7%9A%84%E7%AD%94%E6%A1%88%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%AF%B9SDK%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%8F%82%E8%80%83%E3%80%82%3C%2FP%3E%3CP%3E%E8%87%B4%E4%BB%A5%E6%9C%80%E8%AF%9A%E6%8C%9A%E7%9A%84%E9%97%AE%E5%80%99%EF%BC%8C%3CBR%20%2F%3EMax%3C%2FP%3E%3C%2FLINGO-BODY%3E